以编程方式在Swift中设置tabBarItem标题

时间:2014-12-10 17:49:15

标签: ios swift uitabbarcontroller

我有四个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);
    }
}

这是调用的,但标题永远不会设置。与self.tabBarItem.title ="标题"

相同

我还尝试在viewDidLoad中设置标题,但这只是在转到视图控制器后更新标题。

思想?

6 个答案:

答案 0 :(得分:30)

您可以通过设置视图控制器的viewDidLoad属性,在title中设置视图控制器中的标签标题。

title = "Number 0"

或者,如果要设置标签栏控制器中的标题,可以在标签栏控制器viewDidLoad中设置这些标题:

tabBar.items?[0].title = "Number 0"
tabBar.items?[1].title = "Number 1"

答案 1 :(得分:21)

我想通了,看起来好像被awakeFromNib()写了一遍。

override func awakeFromNib() {
    super.awakeFromNib()

    self.title = NSLocalizedString(MyConstants.StringKeys.TabName, tableName: Constants.Strings.MyTable, comment: Constants.EmptyString);
}

我在那里移动了我的自我分配,它纠正了我的问题。

答案 2 :(得分:5)

以下是每个viewController.swift文件中的解决方案,您只需添加以下代码

即可
sign(x)*(- (phi'(|x|) + c) / (phi(|x|) )

这是一个非常简单的awakeFromNib方法,当nib创建简单的启动时,你可以很容易地调用任何东西,因为在ViewDidLoad或你单击或选择时调用的任何viewControllerDelegate方法。所以这是一个超级简单的功能。

感谢。

答案 3 :(得分:4)

我一直在尝试不同的解决方案,但唯一有效的方法是添加标签栏,在animal = classes.get(pet_type, Pet)(name, colour) viewWillAppear方法中设置代码。我不是单独在每个视图控制器中执行此操作,因为它仅在按下标签栏按钮时才起作用:

UITabBarController

答案 4 :(得分:0)

如果在放入ViewControllers之前以编程方式创建TabBarController,请尝试以下操作:

override init(style: UITableViewStyle) {
    super.init(style: style)

    self.title = "Title"
}

或者这个,如果不是TableViewController

override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)

    self.title = "Title"
}

答案 5 :(得分:0)

在第一个 Viewcontroller 的 ViewDidLoad 中执行以下操作:

edge_ngram