【问题标题】:Tab bar not showing icons?标签栏不显示图标?
【发布时间】:2018-01-20 17:34:37
【问题描述】:

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

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

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

我做错了什么?

PS:我改变了标签栏的色调,只是为了测试它,它可以工作。所以,问题不在于那个......

【问题讨论】:

  • 登录成功后你设置UITabViewController了吗?
  • @Hitesh - 一旦用户成功登录,就会对UITabBarController 执行segue。它不会崩溃,而且我看到了我的自定义视图,所以这不是问题。
  • 什么是文件扩展名?

标签: ios xcode uitabbarcontroller uitabbar uitabbaritem


【解决方案1】:

我附上了描述连接的图片:

  1. 将 TabBar 控制器连接到您的五个视图控制器

  2. 对于每个视图控制器,选择任何视图控制器 -> 在顶部的 Xcode 选项中转到编辑器 -> 嵌入 -> 导航控制器

  3. 在导航控制器中选择底部栏 -> 在实用程序中打开属性检查器 -> 提供图像中突出显示的标题和图像

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

斯威夫特 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)
}

【讨论】:

    【解决方案2】:

    故事板引用和缺少标签栏图标的问题

    如果您在标签栏控制器上附加了故事板引用,您会注意到故事板引用实际上有一个 UITabBarItem

    不要为这个“假”的 UITabBarItem 设置属性!

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

    解决方案

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

    【讨论】:

    • 哇,Mark Moeykens 对我的帖子发表了评论?(我很抱歉又发了一个小嘴,哈哈)但是是的,你是对的,这在我身上发生了很多次。这是 UITabBar 和 Storyboard References 的错误吗?
    • 这解决了我的问题
    • 我已经进行了广泛的搜索,在互联网上寻找解决此问题的方法。谢谢马克!
    • 这让我沮丧了很长时间。我相信 Mark Moeykens,当我没有看到他所描述的内容时,我知道有些事情不对劲。结果我还必须手动将 TabBarItem 添加到我的视图控制器中。当您将选项卡栏链接到已经存在的视图控制器时,似乎就是这种情况。一旦我手动添加了 TabBarItem ......事情就像 Mark 说的那样自动工作。
    • 我很困惑。为什么有HomeViewController SceneHome Scene?你怎么知道视图控制器引用的实际视图控制器是哪个?如果您发布整个文档大纲的图片会很有帮助。
    【解决方案3】:

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

    编码愉快!

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        不要忘记在 tab bar itembar item 中设置 Selected Image 属性和 Image property分类!

        【讨论】:

        • 这个答案让我很开心!非常感谢
        猜你喜欢
        • 1970-01-01
        • 2020-08-31
        • 1970-01-01
        • 2021-09-04
        • 2014-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多