多控制器的管理iOS学院掌握•UINavigationController的工作原理•UITabBarController的工作原理•App主流UI框架结构•Segue的使用•Modal•控制器之间的数据传递•控制器的生命周期方法多控制器•一个iOS中的app很少只有一个控制器组成,除非这个app极其简单•当app中有多个控制器的时候,就需要对这些控制器进行管理•有多个view时,可以用一个大的view去管理1个或多个小view•控制器也是类似,可以用1个控制器去管理多个控制器。•如,用一个控制器A去管理3个控制器B、C、D•控制器A被称为控制器B、C、D的“父控制器”•控制器B、C、D被称为控制器A的“子控制器”•为了便于管理控制器,iOS提供了两个比较特殊的控制器•UINavigationController导航控制器•UITabBarController标签控制器UIViewController•利用UINavigationController,可以轻松管理多个控制器,完成控制器之间的切换•典型例子就是系统自带的“设置”应用UINavigationController的基本使用•UINavigationController的基本使用•初始化UINavigationController•设置UIWindow的rootViewController为UINavigationController•将第一个视图控制器设置为UINavigationController的根视图控制器•通过push方法新建子控制器•通过pop方法可以返回到上一个控制器UINavigationController子控制器•UINavigationController以栈的形式保存子控制器•栈内所有子控制器的集合@property(nonatomic,copy)NSArray<__kindofUIViewController*>*viewControllers;•栈顶控制器@property(nullable,nonatomic,readonly,strong)UIViewController*topViewController;•通过push方法将控制器压栈-(void)pushViewController:(UIViewController*)viewControlleranimated:(BOOL)animated;•通过pop方法将栈顶控制器移出栈-(nullableUIViewController*)popViewControllerAnimated:(BOOL)animated•回到指定控制器-(NSArray*)popToViewController:(UIViewController*)viewControlleranimated:(BOOL)animated;•回到根控制器-(NSArray*)popToRootViewControllerAnimated:(BOOL)animated;修改导航栏的内容•导航栏的内容由栈顶控制器的navigationItem属性决定•UINavigationItem有以下属性影响着导航栏的内容左上角的返回按钮@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;