有没有办法将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

有没有办法将数字单词转换为整数?

NSManagedObject 有没有办法将创建的子类导入 xcdatamodel 文件

有没有办法使用 VueJs 将列表分成列?

Symfony - 有没有办法将实体设置为全局?