EasyBinding
将ViewModel绑定到视图的最简单方式:),真的,非常简单。
示例
要运行示例项目,请先克隆仓库,然后从Example目录运行pod install
。
安装
EasyBinding可以通过CocoaPods获取。要安装它,只需将以下行添加到Podfile中。
pod 'EasyBinding'
使用
Var
是可观察类的核心,您可以使用Var
来监听变量变化,例如
let isLoading: Var<Bool>
let title: Var<String>
Var
接收一个泛型类型来创建您需要的变量,您可以在value
属性中找到您的变量。
let isLoading = Var<Bool>(false)
// Check your bool
if isLoading.value {
...
}
bindTo()
是将视图绑定到变量变化的函数。
// Example UI reference
@IBOutlet weak var activityIndicator: UIActivityIndicatorView!
// Example observable variable.
let isLoading = Var<Bool>(false)
// Example of binding.
isLoading.bindTo(activityIndicator, to: .state)
.state
是一个描述UI元素哪一个属性应该被改变的状态。
public enum VisibilityAnimation {
case fade(time: TimeInterval)
}
public enum BindedProperty {
case visibility
case visibilityAnimated(animation: VisibilityAnimation?)
case text
case state
case title
case image
case value
case progress
case dataSource
}
listen
是监听Var值变化的函数。
func listen(triggerInitialValue: Bool = false, valueDidChange: @escaping (T) -> Void)
使用
myVar.listen { newValue in
print("The new value is: \(newValue)")
}
此方法将仅在变量发生变化时触发调用,如果您想捕获初始值,可以将参数triggerInitialValue
(默认为false)传递为true。
myVar.listen(triggerInitialValue: true) { newValue in
print("The new value is: \(newValue)")
}
notify
是一种方法,用于手动触发所有变量监听器(监听方法和 UI 绑定对象)。
使用
myVar.notify()
添加支持的视图
如果您想支持新的 UIView 或甚至自定义类,只需遵守 ObserverViewProtocol
,此协议包含一个名为 setValue
的简单方法,当任何可观测变量绑定更改时会被触发,您可以在此事件发生时自定义您的行为。
public protocol ObserverViewProtocol {
func setValue<T>(_ value: T, to property: BindedProperty)
}
作者
Carlos Mejía, [email protected]
https://twitter.com/carlosmejia083
许可证
EasyBinding 适用于 MIT 许可证。有关更多信息,请参阅 LICENSE 文件。