文档章节

导航控制器使用全解

哥特复心
 哥特复心
发布于 2014/04/20 23:03
字数 537
阅读 1094
收藏 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
ios开发之导航控制器的原理

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

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

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

JohnZr
2012/06/24
0
0
Manipulating a Navigation Controller’s Array of Vi

问题: 你想要直接控制导航控制器中的的特性 解决方法: 使用UINavigationController类中的ViewControllers属性来访问和修改与导航控制器相关的视图控制器 - (void) goBack { /得到控制器的当...

人生天地间
2014/02/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

阿里云安全中心:自动化安全闭环实现全方位默认安全防护

随着数字化转型的深入发展,企业云上资产越来越多元化,随之而来的是安全威胁的复杂化,企业需要花费大量精力进行告警分析、威胁检测、病毒查杀等工作。Gartner曾指出,随着安全警报的复杂性...

迷你芊宝宝
22分钟前
1
0
好程序员web前端分享值得参考的css理论:OOCSS、SMACSS与BEM

好程序员web前端分享值得参考的css理论:OOCSS、SMACSS与BEM 最近在The Sass Way里看到了Modular CSS typography一文,发现文章在开头部分就提到了OOCSS、 SMACSS、 BEM、这3个词。“如果还不...

好程序员IT
25分钟前
2
0
Gradle的安装和在idea的配置

下载gradle 下载地址:http://services.gradle.org/distributions/ 。我下载的是 gradle-5.4-bin.zip。然后解压到G:\gradle-5.4 配置环境变量。 有3个环境变量: GRADLE_HOME 等于gradle的安...

王坤charlie
25分钟前
1
0
聊聊分布式事务,再说说解决方案

前言 最近很久没有写博客了,一方面是因为公司事情最近比较忙,另外一方面是因为在进行 CAP 的下一阶段的开发工作,不过目前已经告一段落了。 接下来还是开始我们今天的话题,说说分布式事务...

群星纪元
28分钟前
3
0
分布式项目(6)consul注册中心

lelinked
37分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部