创建方法
控制器常见的创建方式有以下几种
* 通过storyboard创建
* 直接创建
// 创建导航控制器的根控制器
ViewController *vc = [[ViewController alloc] init];
// 导航控制器也是需要有根控制器
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
// 导航控制器会跟控制器的view添加到存放子控制器的view
// 导航控制器的根控制器,其实就是导航控制器的第一个子控制器
self.window.rootViewController = nav;
- 只有导航控制器的子控制器才可以拿到导航控制器;
一个控制器只能执行一次push或pop;
控制器view的生命周期方法
- 常见的生命周期方法
- 需要注意的生命周期方法
注意:上述都是在 ARC 下
3.费ARC下的两个方法
调用的时候:
- 一般在didload中清空所有的不在需要的数据;
UINavigationItem
- 在iOS7 之后,系统会默认把图片渲染成蓝色;使用下列方法告诉系统不进行渲染:
image = [image imageWithRederingMode:UIImageRenderingModeAlwaysOrinal]; //使用原始图片(返回原始图片) 渲染模态
2.在设置自定义导航条的view的时候,如果view不显示则一般都是未设置大小(bounds);
一般都是按照上述方法设置自定义的Buttion.
设置技巧
- 在iOS7之后,苹果会自动给导航控制器里面的所有UIScrllerView的顶部都会添加额外的滚动区域(64)。取消添加使用下面的方法:
self.automaticallyAdjustsScrollViewInsets = NO;
- 设置导航条的背景属性:
[self.navigationController.navigationBar setBackgoundImage:[[UIImage alloc]init] forBarMetrics:UIBarMetricsDefault];
//导航条阴影的设置
[self.navigationController.navigationBar setShadowImage:[[UIImage alloc]init]];
UIBarMetricsDefault:只有设置这个后才可以设置导航条的背景属性