首页 > 代码库 > iOS :UINavigationController
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];}
iOS :UINavigationController
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。