我正在使用xcode 8和Swift 3开发iOS项目。
我知道如何制作标签栏控制器,我知道如何制作导航控制器。但我想要实现的是以下屏幕截图:
如您所见,屏幕底部有标签,表示它使用标签栏控制器,我知道该怎么做。但顶部栏始终显示只有标题更改为相应的选项卡名称。
我的问题:
如果选择了哪个标签,如何让这个顶栏始终显示?
我是否需要将每个标签的视图嵌入到导航控制器中才能实现此目的?还是有更好的方法?
=====更新=====
感谢您的回答,我将把每个标签视图嵌入到导航控制器中。但现在,我有一个新问题,将它们划分为单独的故事板的最佳做法是什么?以及如何划分多个故事板?
答案 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的每个模块(根控制器)创建单独的故事板。
创建/分离故事板有两种方法:
答案 2 :(得分:0)
将每个标签插入导航控制器即可。最好的做法是在一个故事板中使用所有内容。为什么要将它们分成单独的故事板?与xib相比,它需要更多的负载。