我有一个有 3 个视图和一个服务逻辑层的应用程序。服务一直在向所有这些视图发送消息。我用来控制所有这些数据的方法是使用 RxBehaviorRelay。
到目前为止,一切都很好,我将变量与服务层匹配,并且我在 ViewController 1、2 和 3 中接收数据。
当我在view2上然后转到view3并返回view2时,问题就来了。在此返回时,我丢失了所有更改,而 BehaviorRelay 对象就像开始一样。
我在 view1 中的代码是这样的
class View1: UIViewController {
var service: ServiceModel? = ServiceModel()
var observableView1 = BehaviorRelay(value: [Object]())
var observableView2 = BehaviorRelay(value: [Object]())
override func viewDidLoad() {
service!.observableView1 = self.observableView1
service!.observableView2 = self.observableView2
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let destination = segue.destination as! View2
destination.observableView2 = self.observableView2
}
}
视图代码2
class View2: UIViewController {
let disposeBag = DisposeBag()
var observableView2 = BehaviorRelay(value: [Object]())
override func viewDidLoad() {
fillTable()
}
func fillTable() {
observableView2.asObservable().bind(to: tvData.rx.items) { (tableview, row, data) in
//code to fill the table
}.disposed(by: disposeBag)
}
}
在服务层上,我只接收更改并放入 BehaviorRelay 对象。
observableView2.accept(changes)
observableView1.accept(changes)
正如我所说,我获得了 view2 中的所有更改,但是当我移至 view3 并返回 view2 时,更改消失了。
对不起我的英语不好。谢谢