对于不一样的viewcontroller之间数据的共享和处理
ios
采用代理的方式,子viewcontroller设计代理协议,并定义协议接口,父viewcontroller实现协议接口,实现子视图控制器退出时将相关数据更新到父视图中app
采用ios的消息机制,父viewcontroller注册消息,子viewcontroller发送消息,触发父viewcontroller的消息处理oop
采用database做为数据中间的存储媒介,子viewcontroller将状态数据存入DB,父viewcontrller从DB获取数据更新viewui
采用ios的NSdefault存储;spa
经过appdelegate中定义全局变量实现中间数据的存储设计
注:代理
第一,使用反向代理举例:两个viewcontroller之间,让视图二退出时视图一拥有视图二的颜色;对象
这里要解决两个问题:第一,视图二退出时,让视图一本身将颜色改掉,毫无疑问,视图一这个类须要增添方法;继承
这个方法只能是视图二来设计代理协议,并定义协议接口;第二,传值问题,在进入第二个视图以前,第二个视图需将代接口
理设置为视图一,为后面视图二来调用事件时,代理来调用代理已经实现的方法作铺垫;
比较正向代理的思路:这个是在ui中顺序执行的状况下;在oc阶段遇到person class两个类,咱们经过person设计协
议,定义协议接口是person,那么让班级实现把这个person对象添加到班级名录中的方法;
第二:appdelegate这里是UI中的实现runloop的单例,对于单例,咱们本身也能够写一个sharedInstance;注意和自
己写一个单例类同样,传值时,appdelegate,sharedInstance都须要拥有要传的数据的字段属性;
第三:这里牵涉到协议@protocal首先在oc中没有多态,多继承;经过@peotocal的方式实现多态;协议谁来作,谁实
现,其对应的头文件中用角括号添加协议名;然后引入代理,老板类在本身的头文件引入需来作这份协议差事的代理字段
属性,并在老板类实现文件中引入协议头文件(而在代理类由于头文件角括号引入了协议,因此其对应实现文件不需再加
协议头文件);