MVC之间如何通信

来源:互联网 发布:淘宝旺铺有什么用 编辑:程序博客网 时间:2024/06/06 18:37
ontroller->model 完全允许。因为controller 要问model如何在屏幕展现内容。


controller->view  完全允许 。  通讯属性outlet,在controller里创建outlets传输到view中。


model---view  之间永远不会通讯。因为model和界面没有关系。view是要重用的,model和view关联,当model改变后,view得重写。


view->controller 通过 target action这个结构来通讯。controller自己画了个 target(目标) ,然后把action(动作)交给view。当view发生一些事情,比如按钮被按下,它把action 发送到target,这时候controller就知道了。view 和controller还有别的通讯机制,比如view要告诉controller发生什么事情 ,将要发生什么事情,或询问是否允许,用到了will did should 。controller把自己设置成委托,用协议来完成委托。来回应will,did,should。这时候,view 还是不知道回应的controller是哪个类。


记住:views 不拥有它们展示的数据。


那view如何获取数据呢?


通过协议获取,delegation 方法,比如data at , count.


数据源的delegation永远是controller,不可能是model。 


三大阵营的工作流程是这样的:controller去model那取数据,告诉view展现数据在屏幕上。即使只有一行代码,也得有controller来参与,不能坏了规矩。


model不能主动勾搭controller,那model数据有变化了,那怎么让controller知道呢?Notification 或KVO机制。当model数据改变,它就广播,controller就收到了。
0 0