无论选择哪个标签

时间:2017-08-23 11:06:18

标签: ios uitabbarcontroller

我正在使用xcode 8和Swift 3开发iOS项目。

我知道如何制作标签栏控制器,我知道如何制作导航控制器。但我想要实现的是以下屏幕截图:

enter image description here

如您所见,屏幕底部有标签,表示它使用标签栏控制器,我知道该怎么做。但顶部栏始终显示只有标题更改为相应的选项卡名称。

我的问题:

  • 如果选择了哪个标签,如何让这个顶栏始终显示?

  • 我是否需要将每个标签的视图嵌入到导航控制器中才能实现此目的?还是有更好的方法?

=====更新=====

感谢您的回答,我将把每个标签视图嵌入到导航控制器中。但现在,我有一个新问题,将它们划分为单独的故事板的最佳做法是什么?以及如何划分多个故事板?

3 个答案:

答案 0 :(得分:0)

要实现此类功能,您必须将每个选项卡插入导航控制器,或者您可以实现在每个选项卡中模拟navBar的重叠视图(这是一个坏主意)。

答案 1 :(得分:0)

使用UIViewController的title属性,在每个视图控制器的生命周期方法(viewDidLoad或viewWillAppear)中以编程方式设置视图控制器的标题。

  

var title: String? { get set }

     

将标题设置为描述视图的人类可读字符串。如果   视图控制器具有有效的导航项或标签栏项,   为此属性分配值会更新这些属性的标题文本   对象。

override func viewDidLoad() {
    super.viewDidLoad()
    self.title = "view controller title"

    // or you can try one of these
    // navigationBar.topItem.title = "view controller title"
    // self.navigationItem.title = "view controller title"
}

您还可以在使用视图控制器执行推送/当前操作之前设置title属性。

testViewControllerInstance.title = "view controller title"


回答第二个Que(更新后的Que):
为每个标签创建一个单独的故事板是很好的方法,因为会有与标签栏根控制器相关的更多导航流程(更多视图控制器)。

为避免复杂性,您应该为tabbar的每个模块(根控制器)创建单独的故事板。

创建/分离故事板有两种方法:

  1. 如果您已将视图控制器放在单个故事板中,则重构故事板。
    (Xcode菜单栏)>>编辑器>>重构你的故事板......
  2. enter image description here


    2.创建新的/单独的故事板。
    (Xcode菜单栏)>>文件>>新>>文件>>故事板>>下一个>>创建

    enter image description here

答案 2 :(得分:0)

将每个标签插入导航控制器即可。最好的做法是在一个故事板中使用所有内容。为什么要将它们分成单独的故事板?与xib相比,它需要更多的负载。