【问题标题】:SwiftUI - Assign a value from a callback, display in viewSwiftUI - 从回调中分配一个值,显示在视图中
【发布时间】:2021-06-03 13:41:01
【问题描述】:

我被困在使用 SwiftUI 应该是微不足道的事情上。我正在从我的 API 中提取一些数据,并且只想使用 ForEach 在我的视图中显示每个项目。

我有以下功能:

@State var workoutVideoList: GetWorkoutVideoListResponse!

func GetWorkoutVideoList() {
    loadingWorkoutVideoList = true
    
    PtPodsApiService.GetWorkoutList(firebaseToken: firebaseAuthToken) { (workoutListResult) -> () in
        DispatchQueue.main.async() {
            workoutVideoList = workoutListResult
            loadingWorkoutVideoList = false
        }
    }
}

然后我想显示另一个视图并将这个对象传递给它:

if workoutVideoList != nil {
    BookAppointmentView(workoutVideoList: workoutVideoList)
}
else {
    Text("Nope")
}

无论出于何种原因,我的主线程将 workoutVideoList 视为 nil,即使它已被分配。我以为使用调度程序分配它可以解决问题,但没有乐趣!

知道我在这里做错了什么吗?

谢谢

【问题讨论】:

  • 你的 @State 变量在 ViewModel 上吗?您的 ViewModel 是 @ObservableObject 吗?如果是,您应该将其更改为 @Published
  • 什么时候调用这个函数?视图何时出现?
  • @xTwisteDx 直接在我的视图中,我会在 SwiftUI 中查看视图模型,谢谢
  • @State 一个默认值 @State var workoutVideoList: GetWorkoutVideoListResponse = false 并使用 onAppear 调用 GetWorkoutVideoList() 但理想情况下,您最终会在 ViewModel 中使用它。
  • 我在这里用 SwiftUI 回答了一个 MVVM 问题,请随意看看。这在 Swift 中非常简单。 stackoverflow.com/questions/67538721/…

标签: ios swift xcode swiftui


【解决方案1】:

@State 一个默认值@State var workoutVideoList: GetWorkoutVideoListResponse = false 并使用onAppear 调用GetWorkoutVideoList(),但理想情况下,您最终会在ViewModel 中使用它。

【讨论】:

    猜你喜欢
    • 2020-07-14
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    • 1970-01-01
    • 2020-06-21
    • 2020-03-23
    相关资源
    最近更新 更多