UITabBarController选项卡的图片和标题直到我点击它们才被设置。

9

我已经在每个UIViewControllers的viewDidLoad:方法中设置了titleimageselected-image属性。这些视图控制器位于UITabBarController中,根据提供的文档,如果您设置这三个属性,UITabBarController将自动显示它们。

[self setTitle: @"title"];
[self.tabBarItem setImage: [UIImage imageNamed:@"image.png"]];
[self.tabBarItem setSelectedImage:[UIImage imageNamed:@"image-selected.png"]];

但问题在于,View Controllers 在用户点击 UITabBar 的相应选项卡之前不会被实例化,因此在选项卡未被按下的时候,既不会显示图像也不会显示标题。
有没有一种干净且面向对象的方法使 UITabBarController 刷新并从其 View Controllers 拉取数据?如果你必须手动告诉 UITabBarController 哪个是哪个,那么拥有 title、image 和 selected-image 属性的意义是什么?

我刚刚实现了最不可靠、最不干净的解决方案:我子类化了UITabBarController,并让它循环遍历所有的视图控制器,然后返回到第一个。请帮我找到另一种方法! - tomidelucca
2个回答

13

viewDidLoad 直到视图需要第一次加载时才会被调用,在这种情况下,是在切换到 ViewController 的选项卡时。

尝试在 ViewController 的指定初始化程序中设置这些属性。


太棒了。谢谢你。 - tomidelucca

2
如果您正在使用Storyboard,应该使用awakeFromNib而不是init方法。代码如下:
- (void)awakeFromNib {
    [self setTitle:@"title"];
    [self.tabBarItem setImage:[UIImage imageNamed:@"image.png"]];
    [self.tabBarItem setSelectedImage:[UIImage imageNamed:@"image-selected.png"]];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接