比如,用一个控制器A去管理3个控制器B、C、D 控制器A被称为控制器B、C、D的“父控制器” 控制器B、C、D的被称为控制器A的“子控制器”
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//创建窗口,根据屏幕大小设置
_window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
// 设置window背景颜色
_window.backgroundColor = [UIColor lightGrayColor];
// 创建控制器
UIViewController *mainController = [[UIViewController alloc] init];
// 创建导航控制器,同时给它指定一个根控制器
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:mainController];
// 给窗口指定根视图控制器
_window.rootViewController = nav;
// 让当前窗口成为主窗口并显示
[_window makeKeyAndVisible];
return YES;
}
1,initWithRootViewController:创建导航控制器时,直接指定一个根控制器。第一次显示出来的自控制器; 2,addChildViewController:此方法是UIViewController的方法,可以用来添加子控制器; 3,通过属性viewControllers进行设置。此属性是UINavigationController的,它可以一次添加多个自控制器; 4,最正常的用法: pushViewController,入栈的方式添加自控制器。
// 使用addChildViewController添加
[nav addChildViewController:mainController];
// 通过属性viewControllers进行设置
nav.viewControllers = @[mainController];
// 通过pushViewController入栈的方式添加自控制器
[nav pushViewController:mainController animated:YES];
@property(nonatomic,copy) NSArray *viewControllers;
@property(nonatomic,readonly) NSArray *childViewControllers;
-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;
-(UIViewController *)popViewControllerAnimated:(BOOL)animated;
Paste_Image.png
Paste_Image.png
//左上角的返回按钮
@property(nonatomic,retain) UIBarButtonItem *backBarButtonItem;
//中间的标题视图
@property(nonatomic,retain) UIView *titleView;
// 中间的标题文字
@property(nonatomic,copy) NSString *title;
// 左上角的视图
@property(nonatomic,retain) UIBarButtonItem *leftBarButtonItem;
// 右上角的视图
@property(nonatomic,retain) UIBarButtonItem *rightBarButtonItem;
[image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
Paste_Image.png
Paste_Image.png
Paste_Image.png
有两种方法UITabBarController中添加子控制器 :
注意:展示的顺序和添加的顺序一致,和导航控制器中不同,展现在眼前的是导航控制器的根视图控制器也就是第一个添加到导航控制器上的视图