标签栏没有显示图标?

时间:2017-08-12 08:17:45

标签: ios xcode uitabbarcontroller uitabbar uitabbaritem

我读了一堆相关的问题,我尝试了他们所说的,没有任何效果。不知道为什么。所以,我有3个不同的UIStoryboards。第一个是处理登录/注册的Auth Storyboard,并且有第二个Storyboard - Tab栏故事板的故事板参考。这个故事板包含5个其他故事板引用,可以加载它的独立视图控制器。

我的问题是,一旦用户登录,图标就不会显示。我在UITabViewController中设置了第一个视图控制器的自定义颜色,以确保它加载。确实如此。

我试图将所有图像/图标设置为“原始”,但是没有用。我设置了一个系统映像,只是为了看是否是问题,它们没有显示出来。另外值得一提的是,图标显示在故事板中,但是当它被编译时,它们在模拟器中无处可见。

我做错了什么?

enter image description here

PS:我已经改变了标签栏的色调颜色,只是为了测试它,它的工作原理。所以,问题不在于......

4 个答案:

答案 0 :(得分:16)

情节提要参考和缺少标签栏图标的问题

如果在“标签栏”控制器上附加了情节提要引用,您将注意到该情节提要引用实际上具有 UITabBarItem

fake UITabBarItem

请勿为此“假” UITabBarItem设置属性!

运行该应用程序时,您的设置将不执行任何操作。您提供的值仅影响您在Interface Builder中看到的内容,而不影响运行时在应用程序中看到的内容。

解决方案

您需要做的是转到情节提要参考指向的ACTUAL视图控制器。该视图控制器还将具有一个UITabBarItem。这是“真实”的UITabBarItem。在此处设置属性(图标,标题等),然后在运行应用程序时会看到它们的显示。

actual view controller

答案 1 :(得分:1)

如果以编程方式使您的navigationController出现,则将出现相同的症状,因为调用viewDidLoad的时间太晚了。在子视图控制器中覆盖init将使您的图标正确显示。

override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
    self.tabBarItem = UITabBarItem(title: "Settings", image: UIImage(named: "gear"), tag: 1)
}

required init?(coder: NSCoder) {
    super.init(coder: coder)
}

编码愉快!

答案 2 :(得分:1)

不要忘记在标签栏项栏项中设置Selected Image属性和Image属性分别分类!

enter image description here

答案 3 :(得分:0)

我有同样的问题。我的错误是我确实在“标签栏项目”中设置了Selected Image,但没有设置Image属性。

因此,选项卡栏图标显示在子视图中(在情节提要中),但未显示在父视图中(即TabBarController)。