Tôi đang khám phá Rx và tôi muốn xem liệu tôi có thể xác định đầu vào và đầu ra của một số yếu tố giao diện người dùng liên quan đến nhau hay không, trước khi thành phần của thành phần này được khởi tạo.Có cách nào để khai báo cập nhật một cách có thể quan sát được sau khi đã được xác định không?
Đây là những gì nó sẽ như thế nào:
class ViewController: UIViewController {
@IBOutlet weak var button: UIButton!
var child: ButtonComponent!
override func viewDidLoad() {
super.viewDidLoad()
let buttonInput = PublishSubject<()>()
let buttonOutput = buttonInput
.scan(0) { count, _ in
count + 1
}
.map { $0.description }
self.child = ButtonComponent(
button: self.button,
input: buttonInput,
output: buttonOutput
)
}
}
class ButtonComponent {
weak var button: UIButton!
let disposeBag = DisposeBag()
init(button: UIButton, input: PublishSubject<()>, output: Observable<String>) {
self.button = button
output
.subscribeNext { string in
button.setTitle(string, forState: .Normal)
}
.addDisposableTo(disposeBag)
button.rx_tap
.subscribeNext {
input.onNext($0)
}
.addDisposableTo(disposeBag)
}
}
Vấn đề ở đây là tôi đang sử dụng PublishSubject để đẩy bản cập nhật cho dòng đầu vào, mà là bắt buộc và khuyến cáo chống lại. Liệu Rx cung cấp một cách để bằng cách nào đó thêm chuỗi vào một quan sát đã chạy?
trả lời cho câu hỏi cuối cùng của bạn là có, bởi sử dụng 'Observable.Merge'. Mặc dù tôi không hoàn toàn chắc chắn làm thế nào để áp dụng nó ở đây ... – supertopi