关于ios:swift-双向绑定代码举例

5次阅读

共计 1464 个字符,预计需要花费 4 分钟才能阅读完成。

例子一:

事件绑定,间接触发

置顶显示,滚动隐没

点击显示,再点隐没


var panelHidden = BehaviorSubject<Bool>(value: false)

bottomBoard.rhsMenuB.rx.tap.subscribe {() in
            self.panelHidden.onNext(self.bottomBoard.rhsMenuB.isSelected)
        }.disposed(by: rx.disposeBag)
        
        panelHidden.asObservable().bind(to: panelG.rx.isHidden).disposed(by: rx.disposeBag)
        panelHidden.map {(haha) -> Bool in
            haha == false
        }.asObservable().bind(to: bottomBoard.rhsMenuB.rx.isSelected).disposed(by: rx.disposeBag)

间接触发


extension PlayerController: UIScrollViewDelegate{func scrollViewDidScroll(_ scrollView: UIScrollView) {
        
        if case EnterP_src.custom = p_input{panelHidden.onNext(tShowD.contentOffset.y > 3)
        }
        else{panelHidden.onNext(contentHan.contentOffset.y > 3)
        }
    }
}


例子 2:

事件绑定,间接触发

点击呈现,再点收起

var topChoosePopHidden = BehaviorSubject<Bool>(value: true)


rhsMostMenuBtn.rx.tap.subscribe {() in
            self.topChoosePopHidden.onNext(self.rhsMostMenuBtn.isSelected)
        }.disposed(by: rx.disposeBag)
        
        
topChoosePopHidden.asObservable().subscribe(onNext: { (toHid) in
            if toHid == false, self.playingSelected{self.playingSelected.toggle()
                self.toPause()}
            UIView.animate(withDuration: 0.3) {
                if toHid{self.constraintA.bottomChoosePop?.constraint.update(offset: 0)
                }
                else{self.constraintA.bottomChoosePop?.constraint.update(offset: self.progressChoosePop.popH)
                }
                self.view.layoutIfNeeded()}
        }).disposed(by: rx.disposeBag)
        
        
topChoosePopHidden.asObservable().map { (ququ) -> Bool in
            ququ == false
        }.asObservable().bind(to: rhsMostMenuBtn.rx.isSelected).disposed(by: rx.disposeBag)

间接触发

func to(page direction: Orientation){topChoosePopHidden.onNext(true)
}
正文完
 0