小问MVC模式
如果V层数据改变了,通过C层来修改M层的数据,然后由M层的数据改变通知对应的所有V层重绘。
小弟有个疑问,当重绘时V层改变,岂不是有通知C层工作。这样不是死循环下去啦?
[解决办法]
没弄过,不懂。帮你顶
[解决办法]
要区分重绘和人为的修改
m改变后c重绘所有画面,重绘并不会引起m的改变,所以不会引起再次重绘,没有死循环
如果有死循环,那是设计出问题了
[解决办法]
V层只负责显示,不负责修改,其实你修改数据是提交给C,然后反馈给M,最后由M来更新V这才是对的。
即使你显示上可以有一个即输即见,但也应该像输入法一样,有个提交的动作。
[解决办法]
汗颜...
[解决办法]
就像2楼说的要区分重绘和人为的修改
你可以定义一个全局变量.
然后供给C层去控制.
当V层重绘时触发C层的一个事件是么?
定义一个BOOL变量.
在事件中先判断这个BOOL变量
bool canRefush=true; //全局变量,控制事件触发public void xxx_refush(...){ canRefush=false; if(!canRefush) { ...M层操作... V层重绘(); //V层重绘,再次调用该事件.但是canRefush为false; 事件被取消. canRefush=true; }}
[解决办法]
精华贴,先留个名
[解决办法]
要区分重绘和人为的修改 !!!Up