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. MVC ---- ckeditor 批量绑定 blur 事件

    在项目遇到个问题,就是把循环出来的ckeditor 批量添加 blur 事件,折腾了2天 终于搞定 @{ ].Rows) { <table class="ui-jqgrid-btabl ...

  2. hdu 5381 The sum of gcd 莫队+预处理

    The sum of gcd Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) P ...

  3. Windows系统下在Eclipse中集成Python

    我现在偶尔开发代码,已经不用Eclipse了,主要原因是查看Jar包中的代码反编译十分不便,项目加载的时候卡,偶尔还会崩溃 用Intellij IDEA和PyCharm 原来的笔记如何在Eclipse ...

  4. Window下的git配置文件在哪里【图文】

    来源:https://jingyan.baidu.com/article/870c6fc3589f22b03fe4be95.html 第一次使用码云建仓库总是提示各种错误,遂,从头在学一遍git,改篇 ...

  5. Python mysql-表的创建,删除和更新

    2017-09-06 20:59:56 数据库的创建 CREATE DATEBASE <数据库的名称> 表的创建 CREATE TABLE <表名> (<列名1> ...

  6. php.ini配置说明

    1.设置时区为中国时区 date.timezone = PRC 2.设置支持MySql数据 extension=php_pdo_mysql.dll 直接将这个注释打开就OK了 3.让PHP支持简写&l ...

  7. SSH Secure Shell Client--- the host may be dow

    the host may be down,or there may be a problem with the network connection. Sometimes such problems ...

  8. LeetCode--155--最小栈

    问题描述: 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中. pop() -- 删除栈顶的元素. top() -- 获取 ...

  9. 12月10日 render( locals:{...}) 传入本地变量。

    Jdstor第一部分后台设计,4-4上传图片. 3.4 Using Partials--3.4.4 Passing Local Variables You can also pass local va ...

  10. hdu-4289 最大流Dinic模板题

    拆点,套模板. 详情见代码. // // main.cpp // hdu_4289 // // Created by Luke on 16/8/29. // Copyright © 2016年 Luk ...