SwiftUI - 从回调中分配一个值,显示在视图中

Posted

技术标签:

【中文标题】SwiftUI - 从回调中分配一个值,显示在视图中【英文标题】:SwiftUI - Assign a value from a callback, display in view 【发布时间】: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 中非常简单。 ***.com/questions/67538721/… 【参考方案1】:

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

【讨论】:

以上是关于SwiftUI - 从回调中分配一个值,显示在视图中的主要内容,如果未能解决你的问题,请参考以下文章

在自定义单元格中的标签中分配值时出现异常

从 Swift 字典中分配 UITableView Cell 标签文本

浅谈CoreData海量数据(实时动态添加和删除)在SwiftUI列表中分页显示的原理及实现

如何在模板类函数中分配struct值?

在 UIbutton 中分配随机标题

将数据从 SwiftUI 传递到 UIKit 的回调