现在,我在标签的根视图的viewDidLoad中设置标题,该标题仅在我单击选项卡时更改。我想在选择标签之前设置它。我试过像:
[[self.parentViewController.tabBarController.tabBar.items objectAtIndex:2] title] = @"string";
在第一个视图中加载另一个选项卡,但显然有一些错误,因为我得到一个左操作数错误。
实现我想要做的事情的正确方法是什么?
答案 0 :(得分:4)
[[self.parentViewController.tabBarController.tabBar.items objectAtIndex:2] title] = @"string";
这里的语法略有不同。你可能想要这样的东西:
[[self.parentViewController.tabBarController.tabBar.items objectAtIndex:2].title = @"string";
但是,这不起作用,因为没有要设置的title
属性。事实上,一旦初始化,我就无法改变UITabBarItem
的标题。您必须使用UITabBar
的{{1}}方法一次设置整个项目组。但它不会很有趣。
我敢打赌这将是Apple HIG违规,这就是为什么使用当前API没有简单的方法。重新考虑您的设计并问自己为什么要更改选项卡的名称,这会让您的用户感到困惑。
答案 1 :(得分:3)
尝试在awakeFromNib中设置标题而不是viewDidLoad。在您需要视图之前,视图控制器的视图实际上并未加载,并且默认情况下标签栏控制器在您实际选择它之前不会访问视图控制器的视图(这就是您在选择时看到标题更改的原因标签)。
由于nib正在创建视图控制器以开始(假设你在IB中构建了标签栏控制器),一旦构建了视图控制器,就会调用awakeFromNib,之后标签栏控制器可以询问标题是什么是