UINavigationControlle

UINavigationController:导航控制器,是iOS中最常用的多视图控制器之一,它用来管理多个视图控制器。也称为多视图控制器。

导航控制器可以认为是管理控制器的控制器,主要管理有层级关系的控制器。

创建:

UINavigationController继承于UIViewController,以栈的形式管理所 控制的视图控制器,至少要有1个被管理的视图控制器,这个控制器 我们称作,导航控制器的根视图控制器。 任何继承于UIViewController的类(多态)都可以作为根控制器。

工作原理:

UINavigationController通过栈的形式管理控制器的切换,控制入栈和出栈 来展示各个视图控制器。

UINavigationController的ContentView始终显示栈顶控制器的view。 viewControllers属性存储了栈中的所有被管理的控制器

navigationController属性,父类中的属性,每个在栈中的控制器,都能通 过此属性,获取自己所在的UINavigationController对象。

入栈和出栈

pushViewController:animated //进如下一个视图控制器

popViewControllerAnimated: //返回上一个视图控制器

popToViewController:animated //返回到指定的视图控制器

popToRootViewControllerAnimated //返回到根视图控制器

UINavigationControlle常用属性:

viewControllers //所有处于栈中的控制器

topViewController //位于栈顶的控制器

visibleViewController //当前正在显示的控制器

navigationBar //导航条

定制UINavigationBar

navigationBar—导航条,iOS7之后默认是透明的,iOS7之前默认是不 透明的。

navigationBar在透明情况,与contentView会重合一部分区域。 navigationBar在不透明情况,contentView跟在navigationBar的下面。

navigationBar竖屏下默认高度44,横屏下默认高度32.

自定义navigationBar

barTintColor //设置导航条的颜色

setBackgroundImage:forBarMetrics: //导航条加背景图片

管理UINavigationItem

UINavigationBar除了能定义自身的样式外,还管理一组 UINavigationItem。

与UINavigationController相似,UINavigationBar也是以栈的形式管 理一组UINavigationItem。提供push和pop操作item。

每个视图控制器都有一个navigationItem属性。navigationItem中设 置的左按钮、右按钮、标题等,会随着控制器的显示,也显示到 navigationBar上

UINavigationItem

UINavigationItem属于MVC中的M。封装了要显示在UINavigationBar上 的数据。

title //标题

titleView //标题视图

leftBarButtonItem //左按钮

rightBarButtonItem //右按钮

UIBarButtonItem

UIBarButtonItem属于MVC的M。定义了UINavigationItem上按钮的触 发事件,外观等

-initWithBarButtonSystemItem:target:action:

-initWithTitle:style:target:action:

-initWithImage:style:target:action:

tintColor

界面间传值

属性传值

代理传值

UINavigationController以栈的形式管理视图控制器。

通过push和pop 控制跳转 UINavigationBar管理一组UINavigationItem,UINavigationItem包含了 UIBarButtonItem。

使用属性传值解决从前往后传值的问题

使用delegate解决从后往前传值的问题

UI基础:UINavigationController、界面通信的更多相关文章

  1. UI基础 - UINavigationController

    如果导航控制器的BarButtonItem属性是一致的,可以重写initialize方法用来设置主题 //再ViewDidload执行前只执行一次 +(void)initialize { //创建的U ...

  2. 转发-UI基础教程 – 原生App切图的那些事儿

    UI基础教程 – 原生App切图的那些事儿 转发:http://www.shejidaren.com/app-ui-cut-and-slice.html 移动APP切图是UI设计必须学会的一项技能,切 ...

  3. Android UI基础之五大布局

    Android  UI基础之五大布局 Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Andro ...

  4. iOS开发UI基础—手写控件,frame,center和bounds属性

    iOS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4 ...

  5. 新建线程与UI线程间的通信

    现在用一个实例来演示一下自己的新建线程与UI线程间的通信. UI界面包含3个控件: 一个输入框,用来输入数字: 一个显示框,用来显示从2开始,到输入数字之间的所有质数: 一个按钮,点击后获取输入框输入 ...

  6. UI基础UIWindow、UIView

    UI基础UIWindow.UIView 在PC中,应用程序多是使用视窗的形式显示内容,手机应用也不例外,手机应用中要在屏幕上显示内容首先要创建一个窗口承载内容,iOS应用中使用UIWindow.UIV ...

  7. Android 的UI基础布局的学习

    一. 今天学习了Android 的UI基础布局的部分,绝大多数的布局都在Androidstudio的这个界面里,如下: 在左边的框里的palette的内部,包含了的大多数的布局所要用的button按钮 ...

  8. JAVASE02-Unit010: 多线程基础 、 TCP通信

    多线程基础 . TCP通信 * 当一个方法被synchronized修饰后,那么 * 该方法称为同步方法,即:多个线程不能同时 * 进入到方法内部执行. package day10; /** * 当多 ...

  9. TCP/IP基础概念及通信过程举例

    TCP/IP基础概念及通信过程举例 出现 上个世纪60年代,由于中央集中式网络的容灾性较弱,以美国国防部为中心的一家组织研究出分组交换网络.后来为了验证分组交换技术的实用性,ARPANET出现了,并且 ...

  10. 免费素材:25套免费的 Web UI 设计的界面元素(转)

    Web 元素是任何网站相关项目都需要的,质量和良好设计的元素对于设计师来说就像宝贝一样.如果您正在为您的网站,博客,Web 应用程序或移动应用程序寻找完美设计的网页元素,那么下面这个列表会是你需要的. ...

随机推荐

  1. 机器学习-数据可视化神器matplotlib学习之路(四)

    今天画一下3D图像,首先的另外引用一个包 from mpl_toolkits.mplot3d import Axes3D,接下来画一个球体,首先来看看球体的参数方程吧 (0≤θ≤2π,0≤φ≤π) 然 ...

  2. 使Apache支持PHP

    1.用记事本打开Apache安装目录下conf文件夹中的httpd.conf文件,找到LoadModule部分的配置代码,在该部分添加下面的代码,将PHP模块加载到Apache服务中,使得Apache ...

  3. spoj TBATTLE 质因数分解+二分

    题目链接:点击传送 TBATTLE - Thor vs Frost Giants #number-theory #sliding-window-1 Thor is caught up in a fie ...

  4. python 同步与异步性能区别

    import gevent def task(pid): """ Some non-deterministic task """ geven ...

  5. MongoDB(课时24 全文索引)

    3.6.3 全文索引 在一些信息管理平台上经常需要进行信息模糊查询,最早的时候是利用了某个字段上实现的模糊查询,但这个时候返回的信息并不会很准确,因为只能够查A字段或B字段,而在MongoDB里面实现 ...

  6. [osg]osg自定义事件的理解

    参考:http://blog.csdn.net/l_andy/article/details/51058907 添加自定义事件 首先osg在其内部通过osgGA::EventQueue类维护了一个事件 ...

  7. c语言中的0UL或1UL是什么意思

    0UL 表示 无符号长整型 0 1UL 表示 无符号长整型 1 如果不写UL后缀,系统默认为:int, 即,有符号整数. 1.数值常数有:整型常数.浮点常数:2.只有数值常数才有后缀说明:3.数值常数 ...

  8. java日期获取前一天和后一天

    import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import j ...

  9. 从celery rabbitmq with docker-compose 引出对容器、依赖注入、TDD的感悟

    用docker配置项目管理系统taiga的时候,不是我一个人遇到这个问题.https://github.com/douglasmiranda/docker-taiga/issues/5 问题描述: 用 ...

  10. Unity搭建简单的图片服务器

    具体要实现的目标是:将图片手动拷贝到服务器,然后在Unity中点击按钮将服务器中的图片加载到Unity中. 首先简答解释下 WAMP(Windows + Apache + Mysql + PHP),一 ...