MVVMBuildItDay 0.1.11

MVVMBuildItDay 0.1.11

Jacob Miner 维护。



  • Jacob Miner

用法

常规设置

在您的 AppDelegate.swift 中添加以下内容

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        ...
        MVVM.shared.initialize()
        return true
    }
    ...
}

创建 ViewModel 的子类

import MVVM 

class BasicViewModel: ViewModel {
    // we'll come back to this later
}

在您的 UIViewController 中添加以下内容

class ViewController: UIViewController {
    private let basicViewModel = BasicViewModel() // replace with your new ViewModel subclass
}

extension ViewController: LiveDataObserver  {
    func setupObservers() {
        
    }

    var viewModel: ViewModel {
        get {
            return basicViewModel // return your viewModel here
        }
    }
}

观察数据

要观察数据,您必须有可以观察的数据,因此向您的 viewModel 添加一些 liveData

import MVVM 

class BasicViewModel: ViewModel {
    lazy var simpleNumber = LiveData<Int>(self)
}

接下来,您需要在之前添加到视图控制器的 LiveDataObserver.setupObservers 函数中调用 observe

func setupObservers() {
    basicViewModel.simpleNumber.observe { number in
        // data comes back as an optional
        guard let number = number else { return }
        print("\(number)")
    }
}

现在,当数据改变时,视图控制器将自动打印数字。

监控生命周期变化

当视图控制器的生命周期发生变化时,ViewModel 中有许多方法被调用。您可以重写它们以获得额外的行为

class BasicViewModel: ViewModel {
    override func created() {
        // called when the view model is initially created. Good for loading data
    }

    override func backgrounded() {
        // called when the app is backgrounded
    }

    override func foregrounded() {
        // called when the app is foregrounded
    }

    override func onCleared() {
        // called when the view model has been cleared (due to viewcontroller de-init)
    }
}