带rxSwift的简单计时器
发布时间:2020-12-14 05:31:57 所属栏目:百科 来源:网络整理
导读:我正在尝试使用Rx Swift重现一个简单的计时器. 我有一个暂停/播放按钮,只适用于暂停和恢复. gameTimer = ObservableNSInteger.interval(1,scheduler: MainScheduler.instance) .subscribeNext({ sec - Void in print("(sec) s") }).addDisposableTo(dispose
我正在尝试使用Rx
Swift重现一个简单的计时器.
我有一个暂停/播放按钮,只适用于暂停和恢复. gameTimer = Observable<NSInteger>.interval(1,scheduler: MainScheduler.instance) .subscribeNext({ sec -> Void in print("(sec) s") }).addDisposableTo(disposeBag!) pauseResumeButton.rx_tap .map{ !self.isRunning.value } .startWith(true) .bindTo( isRunning ) .addDisposableTo(disposeBag!) isRunning显然是一个变量. 谁能帮我?谢谢!
一个小技巧:
class ViewController: UIViewController { let isRunning = Variable(true) override func viewDidLoad() { super.viewDidLoad() isRunning.asObservable() .debug("isRunning") .flatMapLatest { isRunning in isRunning ? Observable<Int>.interval(1,scheduler: MainScheduler.instance) : .empty() } .flatMapWithIndex { (int,index) in Observable.just(index) } .debug("timer") .subscribe() .addDisposableTo(disposeBag) navigationItem.rightBarButtonItem!.rx.tap .subscribe(onNext: { [unowned self] in self.isRunning.value = !self.isRunning.value }) .addDisposableTo(disposeBag) } } 结果: 2016-12-17 20:53:11.408: timer -> subscribed 2016-12-17 20:53:11.414: isRunning -> subscribed 2016-12-17 20:53:11.415: isRunning -> Event next(true) 2016-12-17 20:53:12.503: timer -> Event next(0) 2016-12-17 20:53:13.488: timer -> Event next(1) 2016-12-17 20:53:14.488: timer -> Event next(2) 2016-12-17 20:53:15.488: timer -> Event next(3) 2016-12-17 20:53:16.154: isRunning -> Event next(false) 2016-12-17 20:53:23.155: isRunning -> Event next(true) 2016-12-17 20:53:24.223: timer -> Event next(4) 2016-12-17 20:53:25.229: timer -> Event next(5) 2016-12-17 20:53:26.228: timer -> Event next(6) 2016-12-17 20:53:27.220: timer -> Event next(7) 2016-12-17 20:53:28.225: timer -> Event next(8) 2016-12-17 20:53:29.221: timer -> Event next(9) 2016-12-17 20:53:29.971: isRunning -> Event next(false) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |