UI学习笔记---第八天
UINavigationController的用法 界面间传值
UInavigationController继承于UIViewController,以栈的方式管理所控制的师徒控制器,至少要有一个被管理的视图控制器
创建的时候需要用户提供一个视图控制器作为导航控制器的一个根视图控制器
出栈和人栈
UINavigationController通过控制入栈和出栈来展示各个视图控制器
视图控制器切换常用方法
pushViewController:animated //进⼊下一个视图控制器
popViewControllerAnimated //返回上一个视图控制器
popToViewController:animated //返回到指定的视图控制器
popToRootViewControllerAnimated //返回到根视图控制器
定制UINavigationBar
对于navigationBar, iOS7默认的高度是64.
如果将navigationBar的透明度关闭之后,navigationBar的高度将会变为44
整理
每一个视图控制器都有一个navigationItem属性,当这个控制器被嵌入到UINavigationController里之后UINavigationController的navigationBar会根据控制器的navigationItem属性显示标题,左按钮,右按钮等等
//代理传值:从后一个界面往前一个界面传值
//流程
//1.后一个界面定义一个协议,并且定义一个属性叫delegate
//2.在前一个界面进入后一个界面的瞬间(即:创建完后一个界面之后).让前一个界面作为后一个界面的delegate
//3.前一个界面事件代理方法
//4.后一个界面在合适的机会, 让代理执行代理方法 (传得值以参数的形式含在代理方法里)
单例传值
先建一个类,设置单例模式,并加一个属性,用来存值
//Singleton.h中代码 #import <Foundation/Foundation.h> @interface Singleton : NSObject + (Singleton *)sharedsingleton; @property (nonatomic,retain) NSString *str; @end //Singleton.m中代码 #import "Singleton.h" @implementation Singleton static Singleton *single = nil; + (Singleton *)sharedsingleton { @synchronized(self){ if (single ==nil) { single = [[Singleton alloc] init]; } return single; } } @end
在一个界面的button触发事件的方法中加入下面代码
Singleton *s = [Singleton sharedsingleton];
s.str = _textfield.text;
在需要接受值得页面加入
self.navigationItem.title = [Singleton sharedsingleton].str;//传过来的值设置为bar中title值