有没有办法将preferredStatusBarStyle 与RxCocoa 绑定?
Posted
技术标签:
【中文标题】有没有办法将preferredStatusBarStyle 与RxCocoa 绑定?【英文标题】:Is there a way yo bind preferredStatusBarStyle with RxCocoa? 【发布时间】:2018-07-20 22:39:48 【问题描述】:我正在使用以下代码绑定statusBarStyle
。
public extension Reactive where Base: UIApplication
public var statusBarStyle: Binder<UIStatusBarStyle>
return Binder(self.base) view, attr in
view.statusBarStyle = attr
但是,ios 9 不推荐使用此属性。新文档建议在视图控制器中覆盖 preferredStatusBarStyle
。如何绑定此属性?
【问题讨论】:
【参考方案1】:您不能“绑定”到preferredStatusBarStyle
,因为它是一个生成的属性。正如您所说,您必须覆盖此属性并返回一个值。一种方法可能是创建一个BehaviorRelay
属性,改为绑定到此属性,然后从覆盖的方法返回中继的值。您还需要确保在状态栏样式发生更改时通知视图控制器:
let statusBarStyleRelay = BehaviorRelay<UIStatusBarStyle>(value: .default)
override var preferredStatusBarStyle: UIStatusBarStyle
return statusBarStyleRelay.value
func setupBindings(for statusBarObservable: Observable<UIStatusBarStyle>)
statusBarObservable
.bind(to: statusBarStyleRelay)
.disposed(by: disposeBag)
statusBarStyleRelay
.distinctUntilChanged()
.do(onNext: [weak self] _ in
self?.setNeedsStatusBarAppearanceUpdate()
)
.subscribe()
.disposed(by: disposeBag)
【讨论】:
以上是关于有没有办法将preferredStatusBarStyle 与RxCocoa 绑定?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法将 QVariant 与 QVector 一起使用?
有没有办法将 QTableView 模型转换为 QStandardItemModel