文档章节

导航控制器使用全解

哥特复心
 哥特复心
发布于 2014/04/20 23:03
字数 537
阅读 1091
收藏 2

1.常见方法 1> 将子控制器vc压入栈中 [self.navigationController pushViewController:vc animated:YES];

2> 出栈(弹出栈顶控制器) [self.navigationController popViewControllerAnimated:YES];

3> 直接跳到栈底控制器(回到根控制器) [self.navigationController popToRootViewControllerAnimated:YES];

2.使用原理 1> 导航控制器内部有个viewControllers栈来存放所有的子控制器 2> 展示在导航控制器上面的永远是栈顶控制器的view

3.一般情况下,导航栏上面显示什么内容,由当前栈顶控制器的navigationItem属性决定

  • navigationItem.title : 导航栏的中间标题(也可以直接通过控制器的title属性设置标题)
  • navigationItem.titleView : 导航栏的中间控件
  • navigationItem.leftBarButtonItem : 导航栏左边的按钮
  • navigationItem.rightBarButtonItem : 导航栏右边的按钮

4.特殊:导航栏左上角的返回按钮 文字 由上一个控制器的navigationItem.backBarButtonItem决定

  • 返回按钮不需要监听(默认的操作就是出栈)

利用storyboard完成导航 1.storyboard中用来跳转的每一根线 都是 一个 UIStoryboardSegue对象 1> 自动跳转 (从 某个按钮 拖线到 下一个目的控制器)

2> 手动跳转 (从 来源控制器 拖线到 下一个目的控制器)

  • 一定要给segue绑定一个唯一的identifier
  • 如何跳转?通过来源控制器的一个方法来执行这个UIStoryboardSegue对象 [self performSegueWithIdentifier:@"login2home" sender:nil];

2.UIStoryboardSegue对象 // 唯一标识 @property (nonatomic, readonly) NSString *identifier; // 来源控制器 @property (nonatomic, readonly) id sourceViewController; // 目的控制器 @property (nonatomic, readonly) id destinationViewController;

3.通过UIStoryboardSegue对象完成的跳转过程 1> 初始化(创建)UIStoryboardSegue对象

2> 设置UIStoryboardSegue对象的identifier标识 和 sourceViewController来源控制器

3> 创建目的控制器,并且设置为UIStoryboardSegue对象的destinationViewController属性

4> 在跳转之前,会调用一次sourceViewController的下面方法 // 后面的sender参数就是当初调用performSegueWithIdentifier:sender:方法传入的参数

  • (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

5> 执行UIStoryboardSegue对象 [segue perform];

6> 会将destinationViewController目的控制器压入栈中

© 著作权归作者所有

共有 人打赏支持
哥特复心
粉丝 109
博文 68
码字总数 40593
作品 0
长沙
高级程序员
轻松学习之二——iOS利用Runtime自定义控制器POP手势动画

前言 苹果在IOS7以后给导航控制器增加了一个Pop的手势,只要手指在屏幕边缘滑动,当前的控制器的视图就会跟随你的手指移动,当用户松手后,系统会判断手指拖动出来的大小来决定是否要执行控制...

北方人在上海
2016/07/23
5
0
IOS开发之导航控制器原理

#import "AppDelegate.h" #import "FirstViewController.h" #import "SecondViewController.h" #import "ThirdViewController.h" #import "ForthViewController.h" @interface AppDelegate (......

鹿微微鹿
2016/04/17
20
0
Tab Bar Controller和Navigation Controller混合使用详细教程

在IPHONE上,NAV和TAB混合使用的案例很多.但很多书籍都没详细介绍这个是怎么使用的.我也找了很久才弄清楚怎么做.现在分享给大家. 1.先建立一个Window-based Application 项目. 2.加入一个Tab...

JohnZr
2012/06/24
0
0
ios开发之导航控制器的原理

#import "AppDelegate.h" #import "FirstViewController.h" #import "SecondViewController.h" #import "ThirdViewController.h" #import "ForthViewController.h" @interface AppDelegate (......

鹿微微鹿
2016/04/14
52
0
【原创】遨游springmvc之DispatcherServlet

1.机制 Dispatcher是springmvc前端控制器模式的实现,它提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理,Dispatcher负责请求的派遣,它与spring ioc完美继承,从而可以...

开源中国首席脑科主任
2016/07/23
71
0

没有更多内容

加载失败,请刷新页面

加载更多

一次由HandlerInterceptor进行的深入思考

HandlerInterceptor 是SpringFramework为我们提供的拦截器,一般我们可以用来鉴权或者日志记录等。 它是一个interface,主要方法有: /** * Intercept the execution of a handler. Called...

kipeng300
32分钟前
1
0
cmd中查询mysql表出现中文乱码

问题:在pycharm中正常的fetchall拉取数据,能够正常显示,而在cmd中直接select却出现中文乱码。 解决思路:右键查看cmd命令窗口属性得到,cmd窗口默认编码是gbk(如下图所示),而设置的mys...

fang_faye
58分钟前
2
0
centOS 安装Python3与python2并存

centOS 安装Python3与python2并存 如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环...

MedivhXu
今天
2
0
Spring JdbcTemplate模板模式与回调结合分析

在看Spring的JdbcTemplate的时候,看到其将模板模式和回调模式结合使用的实现,可以精妙的解决很多的问题。详见Spring中涉及的设计模式总结中的关于模板模式和回调模式结合的具分析,本文利用...

宸明
今天
1
0
docker update:更新一个或多个容器的配置

更新容器的配置 docker update:更新一个或多个容器的配置。 具体内容请访问:https://docs.docker.com/engine/reference/commandline/update/#options 语法:docker update [OPTIONS] CONTA...

lwenhao
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部