EasyBinding 0.2.5

EasyBinding 0.2.5

Carlos Mejía 维护。



EasyBinding

CI Status Version License Platform

将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 文件。