首页 > 解决方案 > SwiftUI 和 RxSwift 观察者关闭行为

问题描述

我正在使用 RxSwift 和 SwiftUI 构建一个 iOS 应用程序。我对这些框架完全陌生,所以我一直在学习一些教程,但是我很难弄清楚如何设置与 SwiftUI 结合的观察者,而我想在我BehaviorRelay的事件列表中不断更新我的 UI已更新,这是我的 UI 中的内容:

import SwiftUI
import RxSwift

struct EventsTableView: View {

    private let observer: EventsTableObserver = EventsTableObserver()

    init() {
        observer.setObserver()
        EventViewModel.getAllEvents()
    }

    var body: some View {
            List{
                ForEach(observer.events_view,id: \.id) { event in
                    HStack {
                      Text(event.title)
                    }
                }
            }
    }
}

class EventsTableObserver {

    private let disposeBag = DisposeBag()
    var events_view = [Event]()

    func setObserver(){
        EventGroup.shared.events.asObservable()
        .subscribe(onNext: {
            [unowned self] events in
            self.events_view = events
        })
        .disposed(by: disposeBag)
    }
}

问题是,显然在我的关闭结束后self.events_view,即使事件正在更新,也没有按照我的意愿保留存储的事件值。有人可以在这里给我一个方向吗?

标签: swiftswiftuirx-swift

解决方案


推荐阅读