oc中类与类之间的信息参数传递总结出来有四种:java
直接的属性传值比较适用于,正向的A~B跳转传递,若是是B~A回传跳转比较适用其余传值方式。此时若是用直接属性传值,属性值可能为空。ios
直接属性传值注意事项:设计模式
1.要将数据传到哪个页面(ViewController)就引用那个头文件api
2.属性(赋值)所要传的值要写在推出下一个窗口前面数组
传值传的是地址,a类的数组改变,b类的数组也要改变。。。若是不想改变就使用copy session
通知NSNotificationpost
协议Delegate动画
单例设计模式spa
块语法block设计
申明了代理,因此代理类须要实现中的方法,
self.delegate = b; [self.delegate methodA];
methodAclass B Bjava eesessionblockdelegatedelegate:
block(10,20);
Ablock:
return a+b;
}];
补充一点, 如动画和模态视图的回调也是用block实现的, 在api方法中定义了出现模态视图的一系列操做,在finish时执行了block(),这个block如何执行就由调用这个方法的类去实现
iOS页面跳转:
第一种
[self.navigationController pushViewController:subTableViewController animated:YES];
//描述:经过 NSNavigationBar 进行跳转
[self.navigationController popViewControllerAnimated:YES]; //描述:在子视图返回到上级视图
第二种
UIViewController *control = [[UIViewController alloc] init]; [self presentModalViewController:control animated:YES]; [control release]; //描述:经过事件进行跳转 [self dismissModalViewControllerAnimated:YES]; //描述:经过事件进行返回。
第三种
[self.view.window addSubview:otherview]; [self.view removeFromSuperview]
数据传递:
1)采用代理模式 子viewcontroller设计 代理协议,定义协议接口,父viewcontroller 实现协议接口,实现子viewcontroller 退出时将相关数据更新到父视图。
2)采用ios的消息机制 父viewcontroller注册消息 子viewcontroller 发送消息,触发父viewcontroller的消息处理。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(setData:) name:kNotificationMessage object:nil];//注册监听,其中setData用来处理消息
[[NSNotificationCenter defaultCenter] postNotificationName:kNotificationMessage object:self userInfo:infoDict];//发送消息
3)采用database作为数据中间的存储媒介,子viewcontroller将状态数据存入DB,父viewcontroller从DB获取数据更新view。
4)采用ios的NSDefault 存储
5)经过AppDelegate 中定义全局变量实现中间数据的存储。
6.经过控制器属性传递
.MainViewControllerSecondViewControllerSecondViewControllerfirstValue
重写初始化方法,用于传值- (id)initWithValue:(NSString *)value{if(self = [super initWithNibName:nil bundle:nil]){self.firstValue = value;}return self;}
将方法传值与初始化写到一块儿此时已经将值存在中