RxCocoa-Texture 3.1.0

RxCocoa-Texture 3.1.0

Geektree0101Kanghoon Ohmagi82维护。



 
依赖项
RxSwift~> 5.0
RxCocoa~> 5.0
Texture~> 2.7
 

  • 作者:
  • Geektree0101

alt text

CI Status Version License Platform

注意

pod 'RxCocoa-Texture', '3.x.x'

您的贡献始终受到欢迎!

概念

RxCocoa 为Cocoa和Cocoa Touch框架提供扩展,以利用RxSwift。Texture 提供了各种基本的UI组件,如ASTableNode、ASControlNode、ASButtonNode等。参看:Node 子类

因此,这个库为Texture框架提供扩展,以便像RxCocoa一样利用RxSwift。

参看:Texture + RxSwift Interactive Wrapper

示例

扩展

ASBinder

: 订阅观察者异步操作。

期望流程 期望UI

但是,节点不知道在绘制UI之前已经在UI上应用了事件值。

非期望流程 非期望UI

在这种情况下,节点应该使用setNeedsLayout。但是,[bind:_]不会自动调用setNeedsLayout。

通常,您可以像这样编写代码

// Profile NetworkImage Node is default
// username, description is Optional

// *** self is usernameNode supernode
viewModel.username
         .subscribe(onNext: { [weak self] text in 
            self?.usernameNode.rx.text(Node.usernameAttributes).onNext(text)
            self?.setNeedsLayout() // Here
         })
         .disposed(by: disposeBag)

如果您使用ASBinder,则不需要调用setNeedsLayout。ASBinder将自动操作它。

// Profile NetworkImage Node is default
// username, description is Optional

// *** self is usernameNode supernode
viewModel.username
         .bind(to: usernameNode.rx.text(Node.usernameAttributes),
               setNeedsLayout: self) 
         .disposed(by: disposeBag)

// *** self is descriptionNode supernode
viewModel.desc
         .bind(to: descriptionNode.rx.text(Node.descAttributes),
               setNeedsLayout: self) 
         .disposed(by: disposeBag)

如果您不需要setNeedsLayout,则只需编写如下代码。

// setNeedsLayout default is nil!
viewModel.username
         .bind(to: usernameNode.rx.text(Node.usernameAttributes)) 
         .disposed(by: disposeBag)

viewModel.desc
         .bind(to: descriptionNode.rx.text(Node.descAttributes)) 
         .disposed(by: disposeBag)
ASBinder流程 输出UI

安装

RxCocoa-Texture可以通过CocoaPods获取。要安装它,只需将以下行添加到您的Podfile中

swift 4.x

pod 'RxCocoa-Texture'

警告

这个库已经迁移到Texture 2.7。当Rx订阅逻辑从初始化移动到didLoad方法时,我就不再遇到这个问题。当使用RxSwift / RxCocoa时,从didLoad方法进行订阅是安全的。https://github.com/TextureGroup/Texture/issues/977

作者

Geektree0101, [email protected]

许可证

这个库属于RxSwiftCommunity。RxCocoa-Texture遵循MIT许可证。详见LICENSE文件获取更多信息。