-
使用UITabBarController和使用一般的控制器一样,比如可以设置
self.window.rootViewController = tabBarController;
-
使用
addChildViewController
方法可以给其添加子控制器。每个子控制器对应一个UITabBarButton
,也就是在UITabBarController下面的选项。此时如果想要改变UITabBarButton
的内容,比如想要设置title, image等内容,需要在其对应的子控制器里面通过修改tabBarItem
的属性来设置内容。// JYViewController.m -> 是UITabBarController的子控制器 - (void)viewDidLoad { [super viewDidLoad]; self.tabBarItem.title = @"选项1"; self.tabBarItem.badgeValue = @"1"; }
这一点和UINavigationController是类似的,在使用UINavigationController的时候,我们在当前显示的控制器(也就是栈顶的控制器)中通过修改
navigationItem
来设置导航栏中的内容。self.navigationItem.leftBarButtonItem = ...;
也就是说,使用UINavigationController和UITabBarController的时候:
- 在其对应的控制器里面修改导航栏和tabBar的内容。
- 通过修改tabBarItem和navigationItem的属性来设置导航栏和tabBar的内容。其实tabBarItem和navigationItem属于
模型
(从NSObject继承,以...Item结尾的可以都推测为模型
?),此时我们通过修改模型来修改view中显示的内容。
-
当UINavigationController和UITabBarController同时使用的时候,如果让
navigationController
作为self.window.rootViewController
,然后再让tabBarController
成为navigationController
的子控制器,这么做是合法的,但是会有一些问题。因为前面说过,navigationBar上显示的内容是通过在其当前显示的子控制器中修改的,但是此时navigationController直接显示的子控制器是
tabBarController
,所以当进入不同的界面的时候,我们希望navigationBar上的内容(比如title)改变,但是此时是做不到的,因为我们无法在UITabBarController中修改navigationBar的内容。所以一般来说我们会让tabBarController作为根控制器,如果其他自定义的子控制器需要navigationController,那么就让每个自定义的控制器对应的navigationController作为tabBarController的子控制器,然后让自定义的控制器作为navigationController的子类。这样就可以在自定义控制器中修改navigationController的navigationBar显示内容。
网友评论