小编p0n*_*0ny的帖子

尝试使用环境变量从 HostingViewController 呈现 SwiftUI

我正在尝试使用以下代码从 UI Kit 展示一些 SwiftUI:

class SavedListViewController: UIHostingController<SavedEventListView> {
    required init?(coder: NSCoder) {

        let listView = SavedEventListView().environmentObject(RemindersViewModel())
        super.init(rootView: listView) // BUILD ERROR HERE = "Cannot convert value of type 'some View' to expected argument type 'SavedEventListView'"
    }

    override func viewDidLoad() {
        super.viewDidLoad()
    }
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到 Cannot convert value of type 'some View' to expected argument type 'SavedEventListView'

如果我尝试强制铸造listViewSavedEventListView,应用程序崩溃。

如果我不提供环境变量,应用程序也会崩溃。

无法将“SwiftUI.ModifiedContent<_.SavedEventListView, SwiftUI.EnvironmentKeyWritingModifier.RemindersViewModel>>>”(0x7fff89e46b90)类型的值转换为“_.SavedEventListView”(0x10a2447d0)。

有关如何解决此问题并呈现此 swiftui 视图的任何建议?谢谢

其他代码

class RemindersViewModel: ObservableObject {
    @Published var savedEvents = RemindersStore().fetchRuns()
}

struct …
Run Code Online (Sandbox Code Playgroud)

swift swiftui

3
推荐指数
1
解决办法
636
查看次数

如何在iOS中同步两个异步委托方法回调?

我正在编写一个简单的天气应用程序,试图巩固我对协议和代表的理解.我遇到以下情况:

  • 我有两个数据源用于天气数据(此时只是NSObjects)和一个视图控制器,一旦我从两个源接收数据,我想要更新.
  • 这2个数据源具有我在视图控制器中遵守的协议.一旦他们从他们自己的Web服务接收数据,就会调用他们的委托方法.这可能意味着数据源1在数据源2之前获取数据,反之亦然,或同时获取数据(如果可能,则不知道100%)
  • 我只想在收到两个来源的数据后更新视图.

最好的方法是什么?我正在考虑嵌套委托方法,其中数据源1在有数据(通过协议)时通知数据源2,然后让数据源2通知视图控制器在有数据时更新视图.但是,我认为这不是正确/最好的做事方式.

有任何想法吗?

谢谢

protocols objective-c ios

1
推荐指数
1
解决办法
925
查看次数

标签 统计

ios ×1

objective-c ×1

protocols ×1

swift ×1

swiftui ×1