iOS :UINavigationController
1,创建并使用一个UINavigationController
UIViewController *vc = [[UIViewController alloc]init]; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc]; //然后添加一个视图进去,否则导航栏也没有意义的
2,设置导航栏的左右按钮:
1>常规方法添加:
#pragma mark - 设置左边按钮
//设置单个按钮
vc.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"title" style:UIBarButtonItemStyleBordered target:self action:@selector(function)];
//设置多个按钮
vc.navigationItem.leftBarButtonItems = @[[[UIBarButtonItem alloc]initWithTitle:@"title" style:UIBarButtonItemStyleBordered target:self action:@selector(function)]];
2>加CustomView上去:
//添加CustomView上去
vc.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:[[UIButton alloc]init]];
注意:对于导航控制器左右的按钮,设置其位置是没有效果的,只能设置其宽高。
3.设置导航栏的标题
1>直接设置其根控制器的title:
//设置标题
vc.title = @"title";
2>设置titleView:
//设置标题的视图 vc.navigationItem.titleView = [UIButton buttonWithType:UIButtonTypeContactAdd];
4.控制器之间的跳转:
1>压入栈:进入更深层的控制器,往右走
//压入栈
[vc.navigationController pushViewController:vc animated:YES];
2>出栈:进入到更浅的控制器,往左走
//出栈到上一层控制器
[vc.navigationController popToViewController:aVc animated:YES];
//直接到根控制器
[vc.navigationController popToRootViewControllerAnimated:YES];
注意:通过控制器本身,也可以进行控制器之间的跳转
如:
#pragma mark - model控制器
//弹出
[self presentViewController:vc animated:YES completion:^{
code...
}];
//消失
[vc dismissViewControllerAnimated:YES completion:^{
code...
}];
5.主题设置,待写:
6.技巧:当想拦截导航控制器的某些操作时,可以自定义导航控制器,自定义其中的一些方法。
比如,在UITabBarController时,想在跳转控制器的时候,隐藏底部的tabBar的时候可以这么做
//当PUSH的时候隐藏底部的tabBar
vc.hidesBottomBarWhenPushed = YES;
但是,当所有的控制器在跳转的时候都要隐藏底部的tabBar的话,上面的做法就非常麻烦了,而应该自定义导航控制器,拦截控制器跳转的操作,再设置跳转的控制器跳转时隐藏底部的tabBar,这样就可以只写一次代码了
//在自定义的UINavigationController中重写这个方法,拦截控制器跳转的操作,将要跳转控制器的hidesBottomBarWhenPushed属性改为YES - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { viewController.hidesBottomBarWhenPushed = YES; [super pushViewController:viewController animated:YES]; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。