控制器与导航笔记
来源:互联网 发布:金蝶kis软件视频教程 编辑:程序博客网 时间:2024/06/06 09:40
1.UIWindow
UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow
iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了
一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow
也就说,没有UIWindow,就看不见任何UI界面
添加UIView到UIWindow中两种常见方式:
- (void)addSubview:(UIView *)view;
直接将view添加到UIWindow中,但并不会理会view对应的UIViewController
@property(nonatomic,retain) UIViewController *rootViewController;
自动将rootViewController的view添加到UIWindow中,负责管理rootViewController的生命周期
[UIApplication sharedApplication].windows
在本应用中打开的UIWindow列表,这样就可以接触应用中的任何一个UIView对象
(平时输入文字弹出的键盘,就处在一个新的UIWindow中)
[UIApplication sharedApplication].keyWindow
用来接收键盘以及非触摸类的消息事件的UIWindow,而且程序中每个时刻只能有一个UIWindow是keyWindow。如果某个UIWindow内部的文本框不能输入文字,可能是因为这个UIWindow不是keyWindow
view.window
获得某个UIView所在的UIWindow
常用方法
- (void)makeKeyWindow;
让当前UIWindow变成keyWindow(主窗口)
- (void)makeKeyAndVisible;
让当前UIWindow变成keyWindow,并显示出来
2.UIViewController
* 控制器的创建方式
1),NJViewController *nj = [[NJViewController alloc] init];
2),
指定xib文件来创建
NJViewController *nj = [[NJViewController alloc] initWithNibName:@”NJViewController" bundle:nil];
3),通过storyboard创建
方法一:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];
NJViewController *nj = [storyboard instantiateInitialViewController];
方法二:
通过一个标识初始化对应的控制器
NJViewController *nj = [storyboard instantiateViewControllerWithIdentifier:@”nj"];
* 控制器view的创建方式
* view的懒加载
可以用isViewLoaded方法判断一个UIViewController的view是否已经被加载
控制器的view加载完毕就会调用viewDidLoad方法
* loadView、viewDidLoad、viewDidUnload、didReceiveMemoryWarning
3.UINavigationController
* 通过“设置”演示基本用途
* 通过非storyboard方式,感受导航的作用
1> 创建导航控制器
2> 设置UIWindow的根控制器
3> push 1个、2个、3个 子控制器
4> 解释push的原理(栈、导航控制器的管理过程)
5> 栈底、栈顶控制器的概念
6> 如何设置导航栏上面的内容、返回文字的设置
7> pop的方法使用
8> push和addChild、viewControllers和childViewController的关系
* 通过storyboard方式,感受导航的作用
初始化UINavigationController时,可以通过initWithRootViewController:方法传入一个控制器作为根控制器,这个根控制器永远处于栈底(如果栈中只有一个对象,那么根控制器也处于栈顶)
UINavigationController的使用步骤
初始化UINavigationController
设置UIWindow的rootViewController为UINavigationController
根据具体情况,通过push方法添加对应个数的子控制器
导航控制器常用方法:
使用push方法能将某个控制器压入栈
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;
使用pop方法可以移除控制器
将栈顶的控制器移除
- (UIViewController *)popViewControllerAnimated:(BOOL)animated;
回到指定的子控制器
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;
回到根控制器(栈底控制器)
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;
控制器参数的传递:
控制器之间的数据传递主要有2种情况:顺传和逆传
顺传
控制器的跳转方向: A ----> C
数据的传递方向 : A----> C
数据的传递方式 : 在A的prepareForSegue:sender:方法中根据segue参数取得destinationViewController, 也就是控制器C, 直接给控制器C传递数据
(要在C的viewDidLoad方法中取得数据,来赋值给界面上的UI控件)
逆传
控制器的跳转方向: A---->C
数据的传递方向 : C---->A
数据的传递方式 : 让A成为C的代理, 在C中调用A的代理方法,通过代理方法的参数传递数据给A
导航栏相关知识:
导航栏的内容由栈顶控制器的navigationItem属性决定
UINavigationItem有以下属性影响着导航栏的内容
左上角的返回按钮
@property(nonatomic,retain) UIBarButtonItem *backBarButtonItem;
中间的标题视图
@property(nonatomic,retain) UIView *titleView;
中间的标题文字
@property(nonatomic,copy) NSString *title;
左上角的视图
@property(nonatomic,retain) UIBarButtonItem *leftBarButtonItem;
UIBarButtonItem *rightBarButtonItem 右上角的视图
@property(nonatomic,retain) UIBarButtonItem *rightBarButtonItem;
4.UIViewController的生命周期方法、AppDelegate的生命周期方法
UITabBarController
UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow
iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了
一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow
也就说,没有UIWindow,就看不见任何UI界面
添加UIView到UIWindow中两种常见方式:
- (void)addSubview:(UIView *)view;
直接将view添加到UIWindow中,但并不会理会view对应的UIViewController
@property(nonatomic,retain) UIViewController *rootViewController;
自动将rootViewController的view添加到UIWindow中,负责管理rootViewController的生命周期
[UIApplication sharedApplication].windows
在本应用中打开的UIWindow列表,这样就可以接触应用中的任何一个UIView对象
(平时输入文字弹出的键盘,就处在一个新的UIWindow中)
[UIApplication sharedApplication].keyWindow
用来接收键盘以及非触摸类的消息事件的UIWindow,而且程序中每个时刻只能有一个UIWindow是keyWindow。如果某个UIWindow内部的文本框不能输入文字,可能是因为这个UIWindow不是keyWindow
view.window
获得某个UIView所在的UIWindow
常用方法
- (void)makeKeyWindow;
让当前UIWindow变成keyWindow(主窗口)
- (void)makeKeyAndVisible;
让当前UIWindow变成keyWindow,并显示出来
2.UIViewController
* 控制器的创建方式
1),NJViewController *nj = [[NJViewController alloc] init];
2),
指定xib文件来创建
NJViewController *nj = [[NJViewController alloc] initWithNibName:@”NJViewController" bundle:nil];
3),通过storyboard创建
方法一:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];
NJViewController *nj = [storyboard instantiateInitialViewController];
方法二:
通过一个标识初始化对应的控制器
NJViewController *nj = [storyboard instantiateViewControllerWithIdentifier:@”nj"];
* 控制器view的创建方式
* view的懒加载
可以用isViewLoaded方法判断一个UIViewController的view是否已经被加载
控制器的view加载完毕就会调用viewDidLoad方法
* loadView、viewDidLoad、viewDidUnload、didReceiveMemoryWarning
3.UINavigationController
* 通过“设置”演示基本用途
* 通过非storyboard方式,感受导航的作用
1> 创建导航控制器
2> 设置UIWindow的根控制器
3> push 1个、2个、3个 子控制器
4> 解释push的原理(栈、导航控制器的管理过程)
5> 栈底、栈顶控制器的概念
6> 如何设置导航栏上面的内容、返回文字的设置
7> pop的方法使用
8> push和addChild、viewControllers和childViewController的关系
* 通过storyboard方式,感受导航的作用
初始化UINavigationController时,可以通过initWithRootViewController:方法传入一个控制器作为根控制器,这个根控制器永远处于栈底(如果栈中只有一个对象,那么根控制器也处于栈顶)
UINavigationController的使用步骤
初始化UINavigationController
设置UIWindow的rootViewController为UINavigationController
根据具体情况,通过push方法添加对应个数的子控制器
导航控制器常用方法:
使用push方法能将某个控制器压入栈
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;
使用pop方法可以移除控制器
将栈顶的控制器移除
- (UIViewController *)popViewControllerAnimated:(BOOL)animated;
回到指定的子控制器
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;
回到根控制器(栈底控制器)
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;
控制器参数的传递:
控制器之间的数据传递主要有2种情况:顺传和逆传
顺传
控制器的跳转方向: A ----> C
数据的传递方向 : A----> C
数据的传递方式 : 在A的prepareForSegue:sender:方法中根据segue参数取得destinationViewController, 也就是控制器C, 直接给控制器C传递数据
(要在C的viewDidLoad方法中取得数据,来赋值给界面上的UI控件)
逆传
控制器的跳转方向: A---->C
数据的传递方向 : C---->A
数据的传递方式 : 让A成为C的代理, 在C中调用A的代理方法,通过代理方法的参数传递数据给A
导航栏相关知识:
导航栏的内容由栈顶控制器的navigationItem属性决定
UINavigationItem有以下属性影响着导航栏的内容
左上角的返回按钮
@property(nonatomic,retain) UIBarButtonItem *backBarButtonItem;
中间的标题视图
@property(nonatomic,retain) UIView *titleView;
中间的标题文字
@property(nonatomic,copy) NSString *title;
左上角的视图
@property(nonatomic,retain) UIBarButtonItem *leftBarButtonItem;
UIBarButtonItem *rightBarButtonItem 右上角的视图
@property(nonatomic,retain) UIBarButtonItem *rightBarButtonItem;
4.UIViewController的生命周期方法、AppDelegate的生命周期方法
UITabBarController
0 0
- 控制器与导航笔记
- 导航视图控制器-------------学习笔记
- UINavigationController导航控制器个人笔记
- 导航视图控制器学习笔记
- 使用导航控制器的笔记
- 开发笔记 导航控制器(一)
- IOS导航控制器的随堂笔记
- iOS导航控制器学习笔记(1)
- IOS开发学习笔记(导航控制器,视图控制器,模态)
- IOS之导航控制器与表视图
- 导航控制器常用属性与常用方法
- 分栏控制器与导航控制器的联合使用-主流框架
- 控制器与导航控制器及之间的相互跳转
- 导航控制器与标签控制器的代码搭建
- iOS--UI之导航控制器与标签控制器
- 导航控制器
- 导航控制器
- 导航控制器
- Android手机拍照功能的实现
- Rhythmbox 支持 mp3
- 第七题 胡晓燕
- Zookeeper Client简介
- c++ 变长模板
- 控制器与导航笔记
- BZOJ 1136 POI2009 Arc 单调队列
- JavaScript的5种调用函数的方法
- Java高手真经_编程基础卷——读书笔记(9)——Java类修饰符
- 说说自己找互联网工作的经验
- ORACLE-基础四(数字字典,动态性能视图,控制文件)
- 计蒜客--第30题:合法分数的组合
- 宅急送项目的第七天笔记!(JBPM工作流)
- 定义学生类