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 标签文本