ReusableView 2.0.2

ReusableView 2.0.2

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2018年10月
SPM支持 SPM

Artem Antihevich 维护。



ReusableView

CI Status codecov.io Version License Platform

需求

  • iOS 9.0+
  • osX 10.10+
  • Xcode 9+
  • Swift 4
  • RxCocoa 4.0+

安装

ReusableView 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中即可

pod 'ReusableView'

使用

通过以下协议之一扩展您的类,并免费获得 .viewModel 属性。每次 viewModel 变化时,都会释放之前的订阅(通过释放之前的 reuseBag)并再次调用 onUpdate 方法。

不可复用类型 - 如果您的视图不应被复用。所有后续尝试设置viewModel将只会调用onAttemptToReuse方法。(允许您确保vm只有一个。通常与UIViewControllers一起使用。)

可复用类型 - 如果您的视图支持复用。viewModelWillUpdate将在每次赋值之前被调用。(可用于与单元格、StackView中的视图等一起使用)

方法

prepareForUsage() - 只在第一次赋值之前调用一次,可用来初始化视图。(查看默认实现)

viewModelWillUpdate() - 在每次赋值之前调用。

示例

protocol MainViewModelType {
    var child: Driver<ChildViewModelType> { get }
}

protocol ChildViewModelType {
    var title: Driver<String> { get }
}

class MainViewController: UIViewController, NonReusableType {
    @IBOutlet weak var childView: ChildView!

    func onUpdate(with viewModel: MainViewModelType, reuseBag: DisposeBag) {
        viewModel.child.drive(childView.rx.viewModel).disposed(by: reuseBag)
    }
}

class ChildView: UIView, ReusableType {
    @IBOutlet weak var label: UILabel!

    // parameter reuseBag will be new for each new viewModel.
    func onUpdate(with viewModel: ChildViewModelType, reuseBag: DisposeBag) {
        viewModel.title.drive(label.rx.text).disposed(by: reuseBag)
    }
}

作者

Artem Antihevich, [email protected]

许可

ReusableView许可署Filename:ReusableView 支持在MIT许可下使用。有关更多信息,请参阅LICENSE文件。