DAY04
复习
1 UIAlertView
创建 initWithTitle:
message:
delegate:设置代理
cancelButton:
otherButtonTitle
设置警告框样式:
alert.alertView=枚举
显示
[alert show]
要想成为代理对象:
遵守协议 实现方法 设置委托方和某一代理方关联起来
判断用户点击的按钮
方法一:判断按钮的索引
方法二:判断按钮的标题
2. UIActionSheet
创建:
显示[sheet showInView:self.view]
代理对象
遵守协议<UIActionSheetDelegate>
实现方法
将代理对象与委托对象关联
3 MVC
Model 模型 数据的存储 程序的业务逻辑 多线程 网络传输 文件存储
View 视图 视图的搭建
Controller 控制器 搭起了M与V的连接
4 补充知识
4.1 IBOutletController输出口集合
在控制器中声明的一个数组(用Strong修饰)但是数组的对象来源于系统中创建的对象(对象是weak)
4.2 随机数的产生
C语言的一个函数arc4random()
随机数从0开始的一个无符号的正整数
特点:不需要设置随机种子
与srand(unsigned)time(0))
int nun=rand()%10的区别
4.3 Lazy Loading晚加载
将一些对象的初始化工作 从ViewDidLoad中提取出来,放到Get方法中进行 这样在这个对象不得不加载的时候才调用创建,而不是一开始View就创建出来。
4.4属相如果是ReadyOnly 可以在.m文件中extrntion里面设置属性可读可写
---------------------------------------------------------------------------------------------------------------------
1 多MVC之间的页面跳转
视图之间的切换时通过切换试图控制器来实现切换的
1》创建新的视图控制器
2》退出新的视图
[self presentViewController:新控制器 animated:是否有动画 completion:nil]
3》返回上一个视图
[self dismissViewControllerAnimated:YES copletion:nil];
2 对界面之间的传值
2.1正向传值(A----->B)
1》增加属性
2》赋值
3》界面展现之前在B中重写
-(void)viewWillAppear:(BOOL)animated方法
2.2 反向传值(B---->A)
方法一:
step1:B中公开一个可以接受A引用的aVc;
step2: A 中公开一个可以接受返回值的数据类型message
step3:A推出B之前 将自己的引用传给B
step4:B在dismiss 之前将要返回的数据传给持有A的引用中公开的属性message
step5:在A的ViewWillAppear中显示message的内容
方法二:
委托方:推出的B
代理方:推出B的那个对象A
委托方需要做的三件事:
1.制定协议
2.制定协议的方法
3.什么时候使用
代理方做的三件事:
1.遵守协议
2.实现方法
3.把自己设置为代理
3 协议的定义:
1》协议名:类名+Delegate
2》方法的第一个参数一定是委托方自己
3》方法尽量体现调用的时机
Eg:
@protocol InputViewControllerDelegate <NSObject>
-(void)inputViewController:(InputViewController*)inputVc inputFinishedWithMessahe:(NSString*)message;
合适的时机给代理发消息
@end
添加一个公开的Delegate方法
@property(nonatomic,weak)id<BViewControllerDelegate> delegate;
5 扩展
在类内的initXX 、get、set中使用实例变量即下划线 其他地方都用self
内存修饰
copy :NSString、Block
copy 将对象的拷贝赋给引用 拷贝完是不可改变的