在保留图标的同时使用故事板参考标签栏控制器的文本

时间:2016-05-15 17:50:16

标签: ios swift xcode-storyboard storyboard-reference

我开始重构我的一个项目以使代码更易于管理,并且Tab Bar Controller丢失了其标签代表什么的图标。没有这个,我有点迷失哪个标签是重新订购的目的。

当我使用情节提要参考时,如何让标签栏控制器再次显示图标?

请参阅我的附图。注意前三个标签是如何“空白”,但我还没有重构的其他标签仍显示图标和标题。

对于那些不熟悉故事板参考的人,我在这里遵循教程:http://code.tutsplus.com/tutorials/ios-9-staying-organized-with-storyboard-references--cms-24226

enter image description here

示例故事板示例,以正确显示图标

enter image description here

6 个答案:

答案 0 :(得分:16)

似乎另一个解决方案对我有用而不改变你经历过的方法:

  • 将Storyboard参考文献保留为原样 enter image description here
    • 转到引用的故事板中的初始视图控制器
    • 标签栏项目添加到场景中 enter image description here
    • 像在 UITabBarController 故事板中一样配置它 enter image description here
    • 清洁&跑 enter image description here
    • 对所有故事板参考
    • 重复此操作

快乐的编码!

答案 1 :(得分:7)

首先,在标签栏控制器的故事板中的,应该有一个引用的故事板的场景。

只需点击与该关联标签相关联的场景,然后点击底部的标签栏,然后转到属性检查器,您就可以为其指定新图标了。enter image description here

答案 2 :(得分:3)

更新 - 此方法似乎不再适用于Xcode 9。

以下是如何让标签正确显示:

  1. 将第一个嵌入到选项卡中的UIViewController放入 与UITabViewController相同的故事板。 enter image description here
  2. Ctrl +从标签栏控制器拖动到内容视图 控制器按照惯例进行连接。这将 自动将UITabBarItem添加到内容视图的底部 控制器。 enter image description here
  3. 选择内容视图控制器。
  4. 单击编辑器菜单,然后选择重构到故事板... enter image description here

  5. UITabBarController选项卡现在将指向新的故事板 参考... enter image description here

  6. ...并且内容视图控制器保留了UITabBarItem 标签栏关系。它现在通常会在应用程序中显示。 enter image description here

答案 3 :(得分:1)

出于某种奇怪的原因,我无法在IB的参考视图控制器中看到标签栏。虽然在选择它并扩展文档大纲时,我能够在我的视图列表中看到它。我可以通过它做出改变。

Document outline view

enter image description here

希望这有帮助! :)

答案 4 :(得分:1)

如果在场景之前嵌入导航控制器,则可以像平常一样对其进行编辑。

然后选择您的故事板参考:

转到顶部,然后单击编辑器>嵌入>导航控制器

Tab bar controller with embedded navigation controller and linking storyboard reference

答案 5 :(得分:0)

XCode 11.1:以下方法获取所需的选项卡标题和图标以在运行时显示:

  1. 创建对所需情节提要的情节提要引用(如果位于外部框架中,则包括正确的包标识符)。
  2. 按住Ctrl键从标签栏控制器中拖动到您刚刚创建的参考,然后从出现的上下文菜单中选择“ Relationship Segue>视图控制器”。
  3. 选项卡栏现在应显示一个正方形图像,并在其旁边带有标题“ Item”。单击并拖动该项目可根据需要在栏中重新排列它。
  4. 在目标视图控制器(应该是引用的情节提要中的第一响应者)中,创建一个标签栏项,并在属性面板的“栏项”部分中设置TitleImage属性

这时,正确的标题应在运行时显示(但在情节提要编辑器中不会在编译时显示)。如果图标也在那里,那就太好了。如果不是,您可以尝试检查图像参考是否有效,并与选项卡栏项目位于同一模块中(即在同一框架中)。如果仍然没有出现,这是一个可行的变通方法:

  1. 创建一个继承自UITabBarController的新类。
  2. 按如下所示覆盖viewWillLayoutSubviews

    override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()
    
        // Set the tab bar image at runtime
        if let exampleTab = tabBar.items?.first(where: { $0.title == "ExampleTitle" }) {
            // To insert an image literal, type "Image" and select Image Literal
            // from the autocomplete menu. An icon should appear.
            // Double-click the icon and select the desired image from the grid.
            exampleTab.image = Image Literal
        }
    }
    
  3. 将标签栏控制器的类型更改为您创建的子类(从情节提要编辑器中的“标识”面板中)。

最后,选项卡栏项现在应该在运行时正确显示。如果有人也知道如何在外部框架中的情节提要(在情节提要编辑器中)正确显示它,请告诉我。