1
// initWithRootViewController底层调用pushViewController
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
// initWithRootViewController底层调用pushViewController
// 会把导航控制器的view添加到导航控制器专门存放子控制器的view
//相当于 [nav pushViewController:vc animated:YES];
2
//控制器的入栈和出栈pushViewController、popViewControllerAnimated
[self.navigationController pushViewController:two animated:YES];
[self.navigationController popViewControllerAnimated:YES];
3
// 回到指定控制器
// 注意点:指定的控制器必须是栈里面的控制器
//回到指定的控制器
[self.navigationController popToViewController:self.navigationController.childViewControllers[0] animated:YES];
//回到根控制器
[self.navigationController popToRootViewControllerAnimated:YES];
4
//设置导航条的内容self.navigationItem、
// 设置导航条的内容:由栈顶控制器的navgationItem决定
self.navigationItem.title = @”小码哥”;
// 设置导航条右边
UIButton *cusBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[cusBtn setImage:[UIImage imageNamed:@"navigationbar_friendsearch"] forState:UIControlStateNormal];
[cusBtn setImage:[UIImage imageNamed:@"navigationbar_friendsearch_highlighted"] forState:UIControlStateHighlighted];
// cusBtn.bounds = CGRectMake(0, 0, 30, 30);
// 想让按钮的尺寸跟图片一样大
// 会自动根据按钮的图片或者文字计算按钮的尺寸
[cusBtn sizeToFit];
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:cusBtn];
self.navigationItem.rightBarButtonItem = item;
// 以后只要看到以item结尾都是苹果提供的模型
// UINavigationItem:决定导航条上的内容(左边,中间,右边)
// UIBarButtonItem:决定导航条上按钮的内容
5
//sizeToFit 自己计算适应的尺寸
// 会自动根据按钮的图片或者文字计算按钮的尺寸
[cusBtn sizeToFit];
6
// 设置导航条titleView 设置导航条左边的内容 self.navigationItem.leftBarButtonItem
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(2000, 2000, 100, 100)];
self.navigationItem.titleView = v;
// 导航条上的控件的位置由苹果自己决定,不能自己决定
// 一般系统自带控件中子控件的位置一般由系统决定,我们只能决定尺寸.
// 设置导航条左边的内容
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithTitle:@"左边" style:UIBarButtonItemStyleDone target:self action:@selector(btnClick)];
self.navigationItem.leftBarButtonItem = item;
7
// 设置图片的渲染模式,返回没有被渲染的图片
UIImage *image = [UIImage imageNamed:@”navigationbar_friendsearch”];
// 设置图片的渲染模式,返回没有被渲染的图片
image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStyleDone target:nil action:nil];
// 在iOS7之后默认会把导航条上的按钮的图片渲染成蓝色
// 如果想不要渲染,1.修改图片的渲染模式 2.通过代码
self.navigationItem.rightBarButtonItem = rightItem;
8
//如何修改导航栏的内容
导航栏的内容由栈顶控制器的navigationItem属性决定
UINavigationItem有以下属性影响着导航栏的内容
左上角的返回按钮
@property(nonatomic,retain) UIBarButtonItem *backBarButtonItem;
中间的标题视图
@property(nonatomic,retain) UIView *titleView;
中间的标题文字
@property(nonatomic,copy) NSString *title;
左上角的视图
@property(nonatomic,retain) UIBarButtonItem *leftBarButtonItem;
UIBarButtonItem *rightBarButtonItem 右上角的视图
@property(nonatomic,retain) UIBarButtonItem *rightBarButtonItem;
9
//控制器的生命周期
// 控制器的生命周期方法一般是以view开头
// ARC下控制器view的生命周期方法
// viewDidLoad -> viewWillAppear -> viewWillLayoutSubviews -> viewDidLayoutSubviews -> viewDidAppear -> viewWillDisappear -> viewDidDisappear
// 控制器的view加载完成的时候调用
- (void)viewDidLoad { }
// view完全显示的时候调用
- (void)viewDidAppear:(BOOL)animated{ }
// view完全消失的时候调用
- (void)viewDidDisappear:(BOOL)animated{ }
// view布局子控件完成的时候调用
- (void)viewDidLayoutSubviews { }
// view即将显示的时候调用
- (void)viewWillAppear:(BOOL)animated{ }
// view即将消失的时候调用
- (void)viewWillDisappear:(BOOL)animated{ }
// view即将布局子控件的时候调用
- (void)viewWillLayoutSubviews{ }
#pragma mark - 非ARC
// 在接收到内容警告的时候有可能会调用
// view即将销毁的时候调用
- (void)viewWillUnload{ }
// view完全销毁的时候调用
- (void)viewDidUnload
{
// 清空数据
self.datas = nil;
}