控制器管理
1、如何创建一个控制器
a、通过storyboard创建:
//先加载storyboard文件(Test是storyboard的文件名) UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil]; //接着初始化storyboard中的控制器,初始化“初始控制器”(箭头所指的控制器) YLViewController *yl = [storyboard instantiateInitialViewController]; //通过一个标识初始化对应的控制器 YLViewController *yl = [storyboard instantiateViewControllerWithIdentifier:@”yl"];
b、直接创建
YLViewController *yl = [[YLViewController alloc] init];
c、指定xib文件来创建
YLViewController *mj = [[YLViewController alloc] initWithNibName:@"YLViewController" bundle:nil];
2、控制器View的延迟加载
控制器的View是延迟加载的,也就是说用到时再加载
可以用isViewLoaded方法判断一个UIViewController的View是否已经被加载,控制器的View加载完毕就会调用viewDidLoad方法
3、多控制器管理概念
界面中有多个View时,可以用一个大的View作为父View进行统一管理,方便所有View的属性(位置、宽高)的控制。当一个APP中有多个控制器时,也需要一个控制器来统一管理,父控制器和子控制器由此而生。
为了方便管理控制器,IOS提供了2个比较特殊的控制器(当然我们完全可以自定义它们)
UINavigationController、UITabBarController。
UINavigationController的简单使用
a、初始化UINavigationController
b、设置UIWindow的rootViewController为UINavigationController
c、根据具体情况,通过push方法添加对应个数的子控制器
4、UINavigationController的子控制器
UINavigationController以栈的形式保存子控制器
@property(nonatomic,copy) NSArray *viewControllers;
@property(nonatomic,readonly) NSArray *childViewControllers;
使用push方法能将某个控制器压入栈
使用pop方法可以移除控制器
回到指定的子控制器popToViewController
回到根控制器popToRootViewControllerAnimated
5、如何修改导航栏的内容