Sam*_*Sam 23 uitabbarcontroller ios swift
我有四个UIViewControllers链接到UITabBarController的标签栏.我需要在故事板之外和类的内部设置标签栏项目标题.
我试过了..
class MyViewController: UIViewController {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.title = NSLocalizedString(MyConstants.StringKeys.TabName, tableName: Constants.Strings.MyTable, comment: Constants.EmptyString);
}
}
Run Code Online (Sandbox Code Playgroud)
这是调用,但标题永远不会设置.与self.tabBarItem.title ="标题"相同
我也尝试在viewDidLoad中设置标题,但是只有在转到视图控制器后才更新标题.
思考?
kei*_*ter 34
您可以viewDidLoad
通过设置视图控制器的title
属性在视图控制器本身中设置选项卡标题.
title = "Number 0"
Run Code Online (Sandbox Code Playgroud)
或者,如果要从标签栏控制器设置标题,可以在标签栏控制器中将它们设置为viewDidLoad
:
tabBar.items?[0].title = "Number 0"
tabBar.items?[1].title = "Number 1"
Run Code Online (Sandbox Code Playgroud)
Sam*_*Sam 22
我想通了,看起来好像被awakeFromNib()写了一遍.
override func awakeFromNib() {
super.awakeFromNib()
self.title = NSLocalizedString(MyConstants.StringKeys.TabName, tableName: Constants.Strings.MyTable, comment: Constants.EmptyString);
}
Run Code Online (Sandbox Code Playgroud)
我在那里移动了我的自我分配,它纠正了我的问题.
小智 8
我一直在尝试不同的解决方案,但是唯一对我有用的解决方案是添加标签栏,以在中的viewWillAppear
方法中设置代码UITabBarController
。我不会在每个视图控制器中单独执行此操作,因为它仅在按下标签栏按钮时才起作用:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
guard let items = tabBar.items else { return }
items[0].title = "Title0"
items[1].title = "Title1"
items[2].title = "Title2"
items[3].title = "Title3"
}
Run Code Online (Sandbox Code Playgroud)
小智 5
以下是每个viewController.swift文件中的解决方案,您只需添加以下代码即可
override func awakeFromNib() {
self.tabBarItem.title = "title"
self.tabBarItem.image = "image.png"
}
Run Code Online (Sandbox Code Playgroud)
这是一个超级简单的awakeFromNib方法,当nib在启动时创建简单时,您可以轻松调用任何东西,因为在ViewDidLoad或单击或选择时调用的任何viewControllerDelegate方法.所以这是一个超级简单的功能.
谢谢.
归档时间: |
|
查看次数: |
23512 次 |
最近记录: |