标签栏不显示图标?

Tab bar not showing icons?

我看了一堆相关的问题,我试了他们说的,没有任何效果。不知道为什么。所以,我有 3 个不同的 UIStoryboards。第一个是处理 Login/Register 的 Auth Storyboard,并且有一个对第二个 Storyboard - Tab bar Storyboard 的 Storyboard 引用。这个故事板包含 5 个其他故事板引用,这些引用将加载它的独立视图控制器。

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

我尝试将所有 images/icons 设置为将它们呈现为 "Original",但没有用。我设置了一个系统图像,只是为了看看是否是这个问题,它们没有显示。另外值得一提的是,图标显示在故事板中,但在编译时,它们在模拟器中无处可见。

我做错了什么?

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

我附上了描述联系的图片:

  1. Connect TabBar Controller to your five View Controllers

  2. For each View Controller, select any View Controller -> Go to Editor in Xcode options at top -> Embed In -> Navigation Controller

  3. Select bottom bar in Navigation Controller -> open Attribute Inspector in Utilities -> provide the your title and image as highlighted in image

从 Login/Register 到 TabBar 屏幕的导航: 将 Storyboard ID 提供给 TabBarController,例如。 "TabBarController" 并使用相应 Storyboard 的 Storyboard ID 创建 TabBarController 实例。

Swift 3

func navigateToTabBar() {
    let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
    let nextViewController = storyBoard.instantiateViewController(withIdentifier: "TabBarController") as UIViewController
    self.present(nextViewController, animated:true, completion:nil)
}

故事板引用和缺少选项卡栏图标的问题

如果你的 Tab Bar Controller 附加了 Storyboard References,你会注意到 Storyboard Reference 实际上有一个 UITabBarItem

不要为此“假”UITabBarItem 设置属性!

当您 运行 应用程序时,您的设置将完全无效。您提供的值只会影响您在 Interface Builder 中看到的内容,而不会影响您在 运行 应用程序中看到的内容。

解决方案

您需要做的是转到故事板参考指向的实际视图控制器。该视图控制器上还将有一个 UITabBarItem。这是“真正的”UITabBarItem。在那里设置您的属性(图标、标题等),您将在 运行 应用程序时看到它们显示。

如果您以编程方式制作 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)
}

编码愉快!

我遇到了同样的问题。我的错误是我确实在 "Tab Bar Item" 中设置了 Selected Image,但我没有设置 Image 属性。

因此,选项卡栏图标显示在子视图中 [在故事板中],但未显示在父视图(即 TabBarController)中。

别忘了在[=15=里面设置Selected Image 属性和Image 属性 ]标签栏项目和栏项目类别分别!

我遇到了与上述类似的问题,但文本和图像都没有显示为 tabItem,但那里有一个空的占位符区域并且仍然可以单击它并打开视图。

我的 tabItem 的 viewController 被设置为 Storyboard Reference,因此当我手动添加 Tab Bar Item 时不小心将它放在场景中但在场景的 viewController 之外。这显然很重要....