MVVM设计模式(二)

作者: Harely | 来源:发表于2017-12-17 12:03 被阅读9次

View-Model的连接

连接一:用对应的 view-model 来初始化视图控制器:

MYTwitterUserProfileViewController *profileViewController = [[MYTwitterUserProfileViewController alloc] initWithViewModel: userProfileViewModel];

链接二:有时你无法在初始化时将 view-model 传入, 比如在 storyboard segue 或 cell dequeuing 的情况下. 这时你应该在讨论中的视图(控制器)中暴露一个公有可写的 view-model 属性.

MYTwitterUserCell *cell = [self. tableView dequeueReusableCellWithIdentifier: @"MYTwitterUserCell" forIndexPath: indexPath];

// grab the cell view-model from the vc view-model and assign itcell. viewModel = self. viewModel. tweets[indexPath. row];

连接三:我们可以在程序调用前传入 view-model, 比如init和viewDidLoad, 我们可以从view-model 的属性初始化所有 UI 元素的状态.


问题:

当”go” 按钮在什么时候可用了怎么办?

当用户标签和头像在什么时候从网络上下载并填充了怎么办?

当输入框改变时,我们如何更新数据?

惯性思维:

a. 可以将视图控制器暴露给 view-model, 以便于当相关数据变化或类似事件发送时它可以调用一个 “updateUI” 方法. (别这么干. )

b. 在 view-model 上将视图控制器作为一个委托?当 view-model 内容有变化时发个通知?(不不不不. )

解决问题的思路:

视图控制器会感知一些变化的发生. 我们可以使用从 UITextfield 得来的委托方法在每当有字符变化时通过检查 view-model 来更新按钮的状态.

这种方法解决的场景是在只有再文本框发生变化时才会影响 view-model 中的isUsernameValid值. 假使还有其他变量/动作改变isUsernameValid的状态将会怎么样?对于 view-model 中的网络调用会怎么样?或许我们该为 view-model 上的方法加一个完成后回调处理, 这样我们此时就可以更新 UI 的一切东西了?使用珍贵而笨重的 KVO 方法怎么样?


进入ReactiveSwift中

相关文章

  • Vue快速入门

    MVVM模式 什么是MVVM模式? MVVM(Model-View-ViewModel)是一种软件架构设计模式,由...

  • MVVM设计模式

    MVVM设计模式 在介绍MVVM设计模式之前我们先介绍一下DataBinding DataBinding,2015...

  • vue面试问题

    1.MVVM模式和MVC模式 MVVM模式是Model-View-ViewModel的缩写。MVVM是一种设计...

  • 关于 MVVM 设计模式

    本文主要浅析传统 MVP 设计模式与先进流行的 MVVM 设计模式的一些区别,以及简要分析 MVVM 设计模式的优...

  • MVVM设计模式(二)

    View-Model的连接 连接一:用对应的 view-model 来初始化视图控制器: MYTwitterUse...

  • iOS基础总结

    一、设计模式是什么?你知道哪些设计模式,并简要叙述? 二、MVC和MVVM的区别 三、#import跟 #incl...

  • iOS 设计模式 一

    设计模式随记 系统架构模式 1. MVC - MVVM - MVP - MVVM、MVC协调版 MVC :...

  • MVVM设计模式在Android编程中的应用

    MVVM设计模式在Android编程中的应用 大家好,这一期呢,我们来看一下mvvm的设计模式。 Mvvm的意思是...

  • iOS MVVM架构总结

    参考:iOS 中MVC设计模式iOS MVVM架构iOS MVVM-框架介绍iOS 架构模式MVVM的实践总结iO...

  • 02-Vue单向数据绑定与双向数据绑定

    MVVM设计模式 在MVVM设计模式中由3个部分组成M : Model 数据模型(保存数据, 处理数据业务...

网友评论

    本文标题:MVVM设计模式(二)

    本文链接:https://www.haomeiwen.com/subject/qfsywxtx.html