创建 UINavigationController(导航控制器)

在AppDelegate.m中创建

    // 创建一个普通控制器
RootViewController *rootVC = [[RootViewController alloc] init]; // UINavigationController主要用来管理一组控制器(至少有一个),自带 view 可是不使用
UINavigationController *rootNC = [[UINavigationController alloc] initWithRootViewController:rootVC]; // 加入 控件时 是否计算导航条的宽度 默认 YES
rootNC.navigationBar.translucent = NO; // 改变导航条的字体颜色
rootNC.navigationBar.tintColor = [UIColor blueColor]; // 改变导航条总体颜色
rootNC.navigationBar.barTintColor = [UIColor brownColor]; // 改变导航条标题颜色
rootNC.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:[UIColor redColor]}; // 给整个导航条加上背景图片
[rootNC.navigationBar setBackgroundImage:[UIImage imageNamed:@"2.png"] forBarMetrics:UIBarMetricsDefault]; self.window.rootViewController = rootNC;
[rootVC release];
[rootNC release];

入栈和出栈

在 view 中设置 button 属性,并创建 button

入栈要引入后一个页面的控制器(controller)

@property (nonatomic, retain)UIButton *button;

在 controller 中绑定并实现点击事件

- (void)viewDidLoad {
[super viewDidLoad]; self.title = @"首页"; // 绑定点击事件
[self.rootView.button addTarget:self action:@selector(buttonDidClicked:) forControlEvents:UIControlEventTouchUpInside]; } #pragma mark - button 点击事件
- (void)buttonDidClicked:(UIButton *)sender
{
ScendViewController *secondVC = [[ScendViewController alloc] init];
// 压栈处理 进入下一个页面
[self.navigationController pushViewController:secondVC animated:YES];
}

出栈

#pragma mark - 实现点击事件 出栈
- (void)buttonDidClicked:(UIButton *)sender
{
[self.navigationController popViewControllerAnimated:YES]; }

指定页面跳转

#pragma mark - 通用方法 pop到指定控制器
- (void)button2DidClicked:(UIButton *)sender
{
// pop 到指定控制器
// [self.navigationController popToViewController:self.navigationController.viewControllers[0] animated:YES]; NSArray *array = self.navigationController.viewControllers; RootViewController *root = nil; for (id VC in array) {
if ([VC isKindOfClass:[RootViewController class]]) {
root = VC;
break;
}
} if (root != nil) {
[self.navigationController popToViewController:root animated:YES];
}
}

跳转到根视图控制器

- (void)buttonDidClicked:(UIButton *)sender
{
[self.navigationController popToRootViewControllerAnimated:YES];
}

自己定义返回按钮

- (void)viewDidLoad {
[super viewDidLoad];
// 定义一个返回按钮
// left and right 都能够
UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"我的返回" style:UIBarButtonItemStylePlain target:self action:@selector(leftButtonItemAction:)]; UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"1.png"] style:UIBarButtonItemStylePlain target:self action:@selector(leftButtonItemAction:)]; UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemReply target:self action:@selector(leftButtonItemAction:)]; // 让系统左(右)边按钮换掉
self.navigationItem.leftBarButtonItem = leftButtonItem; }
#pragma mark - 导航栏左边按钮的点击方法
- (void)leftButtonItemAction:(UIBarButtonItem *)sender
{
[self.navigationController popViewControllerAnimated:YES];
}

UI_UINavigationController的更多相关文章

随机推荐

  1. Appium + python -小程序实例

    from appium import webdriverfrom appium.webdriver.common.touch_action import TouchActionfrom time im ...

  2. idea常用快捷键(转)

    ---恢复内容开始--- IntelliJ Idea 常用快捷键列表 Ctrl+Shift + Enter,语句完成 “!”,否定完成,输入表达式时按 “!”键 Ctrl+E,最近的文件 Ctrl+S ...

  3. IO流遍历文件夹下所有文件问题

    import java.io.File; /** * @author 王恒 * @datetime 2017年4月20日 下午2:24:32 * @description 递归调用 * */ publ ...

  4. 最近积累的JS 东西,分享一下

    js 关闭页面 var browserName=navigator.appName; if (browserName=="Netscape") { window.open('',' ...

  5. 【Oracle】服务器端监听配置

    一.静态监听 创建端口为1521的监听,静态注册,本机ip:192.168.10.2 [oracle@localhost ~]$ vi /u01/app/oracle/product/11.2.0/d ...

  6. Java_Web之宠物管理系统

    使用JSP+servLet实现宠物管理系统,oraC1e11g作为后台数据厍,实现查看宠物和增加宠物的功能由你实现,如图: 其中宠物包栝:狗.猫.鸟.鼠 具体要求及推荐实现步骤 第一步:创建数据库代码 ...

  7. 2013款MacBook Air装Windows7单系统

    经过两天的摸索,查找无数资料终于把2013款的MacBook Air装上了WIN 7,虽然网上有很多的资料但是都不是我想要的,第一个我的是2013款的MacBook Air,跟原来2012 11款Ma ...

  8. dubbo之本地存根

    本地存根 远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑,比如:做 ThreadLocal 缓存,提前验证参数,调用失败后伪造容错数据等等,此时就需要在 ...

  9. dubbo之服务分组

    当一个接口有多种实现时,可以用group区分. 服务 <dubbo:service group="feedback" interface="com.xxx.Inde ...

  10. (转)基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作

    http://www.cnblogs.com/wuhuacong/p/5147368.html 在前面介绍了很多篇相关的<Bootstrap开发框架>的系列文章,这些内容基本上覆盖到了我这 ...