第三十篇:控制器的生成与多控制器的管理
来源:互联网 发布:手机淘宝怎么看优惠券 编辑:程序博客网 时间:2024/04/30 12:26
1.如何创建一个控制器
》控制器常见的创建方式有以下几种:
QJViewController *vc = [[QJViewControlleralloc] init];
> QJViewController *vc = [[QJViewControlleralloc] initWithNibName:@"QJViewController"bundle:nil]; // bundle的参数为nil,则默认是:[NSBundle mainBundle]
> QJViewController *vc = [[QJViewController alloc] init]; // 如果有相应的xib文件,则会自动加载,但会经过几步检察。后面讲
》通过storyboard创建控制器:
UIStoryboard*storyboard = [UIStoryboardstoryboardWithName:@"Test"bundle:nil];
QJViewController *vc= [storyboard instantiateInitialViewController];
QJViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@”qjvc"];
》通过xib文件来创建控制器:(1)指明xib文件名,创建方式一:
QJViewController *vc = [[QJViewController alloc] initWithNibName:@"QJViewController" bundle:nil]; // bundle的参数为nil,则默认是:[NSBundle mainBundle]
(2)没有指明xib文件名,创建方式二:
QJViewController *vc = [[QJViewController alloc] init];
先察看QJViewController有没有实现- loadView方法,如果没有实现:则察看有没有QJView.xib文件,如果有则在这个xib文件中加载,如果没有该xib,则再从QJViewController.xib文件中加载所要创建的QJViewController对象。
》创建全程:
2.控制器view的延迟加载
3.多控制器:
》描述:
》UINavigationController
(1)利用UINavigationController,可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型例子就是系统自带的“设置”应用
(2)UINavigationController导航控制器的简单使用
@property(nonatomic,copy)NSArray*viewControllers;
@property(nonatomic,readonly)NSArray *childViewControllers;
- (void)pushViewController:(UIViewController*)viewController animated:(BOOL)animated;
- (UIViewController*)popViewControllerAnimated:(BOOL)animated;
- (NSArray*)popToViewController:(UIViewController*)viewController animated:(BOOL)animated;
- (NSArray*)popToRootViewControllerAnimated:(BOOL)animated;
> 显示UINavigationController的子控制器:
每次显示的都是栈顶的子控制器:当一个控制器被放到栈顶后,这时就需要把这个控制器的view显示到UINavigationController的view之上,那么就会先wb
(4)UINavigationController的view结构:> 一个导航栏:navigationItem,与一个UINavigationController的view。
(5)如何修改导航栏的内容
@property(nonatomic,retain)UIBarButtonItem*backBarButtonItem;
@property(nonatomic,retain)UIView *titleView;
@property(nonatomic,copy) NSString *title;
@property(nonatomic,retain)UIBarButtonItem*leftBarButtonItem;
@property(nullable,nonatomic,copy) NSArray<UIBarButtonItem *> * leftBarButtonItems;
@property(nonatomic,retain)UIBarButtonItem *rightBarButtonItem;
@property(nullable,nonatomic,copy) NSArray<UIBarButtonItem *> *rightBarButtonItems;(6)控制器的view的生命周期调用的方法顺序:
4.Segue
》什么是Segue:Storyboard上每一根用来界面跳转的线,都是一个UIStoryboardSegue对象(简称Segue)
》Segue的属性:
@property (nonatomic, readonly) NSString * identifier;
@property (nonatomic, readonly) id sourceViewController;
@property (nonatomic, readonly) id destinationViewController;
》Segue的类型:
[self performSegueWithIdentifier:@"login2contacts" sender:nil];
// self是来源控制器, Segue必须由来源控制器来执行,也就是说,这个perform方法必须由来源控制器来调用
- (void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender;
// 这个sender是当初performSegueWithIdentifier:sender:中传入的sender
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
5.控制器的数据传递
》控制器之间的数据传递主要有2种情况: 顺传 和 逆传
》顺传
(要在C的viewDidLoad方法中取得数据,来赋值给界面上的UI控件)
》逆传
6.UITabBarController
》UITabBarController的子控制器
- (void)addChildViewController:(UIViewController *)childController;
@property(nonatomic,copy)NSArray*viewControllers;
》UITabBarController的view结构
》UITabBar
》UITabBarButton
7.App主流UI框架结构
8.Modal
- (void)presentViewController:(UIViewController*)viewControllerToPresent animated: (BOOL)flagcompletion:(void (^)(void))completion
- (void)dismissViewControllerAnimated:(BOOL)flagcompletion: (void (^)(void))completion;
- 第三十篇:控制器的生成与多控制器的管理
- 关于域控制器的管理
- 存储的控制器冗余与多路径
- SDN控制器的拓扑管理与LLDP链路发现
- 多控制器的创建
- html与控制器的关联
- DSP的DMA控制器与ARM的DMA控制器比较
- 多控制器管理:UINavigationController与UITabBarController
- IOS多视图控制器管理的总结与回顾(一)
- 视图控制器的视图的内存管理
- 带智能卡控制器与不带智能卡控制器的区别
- 分栏控制器与导航控制器的联合使用-主流框架
- 控制器与导航控制器及之间的相互跳转
- 导航控制器与标签控制器的代码搭建
- ThinkPHP自动生成的控制器类
- 多控制器管理, UINavigationController
- 多控制器管理
- 多控制器管理
- 女程序猿到此一游
- 连接数据库
- java之-命令模式
- 微信网页开发问题汇总
- 分布式RAM
- 第三十篇:控制器的生成与多控制器的管理
- 父类子类之间的一个经典题目(有关成员变量何时赋值和在哪里赋值的问题)
- 数塔DP
- pygame编写的坦克游戏(一)
- King's Sanctuary
- cf#324 Div.2 Problem C Marina and Vasya
- [LeetCode-160] Intersection of Two Linked Lists(找到两链表公共交叉点)
- [面试金典]顺时针打印矩阵
- 全局变量和局部变量