Lew*_*ion 3 swift swiftui combine
我试图在我的视图模型上获取一些数据后显示一个视图(其中数据可以是可选的,因为视图模型只在请求时获取它)。
为什么以下是不可能的/我应该怎么做?
@Binding var someViewModel: SomeViewModel?
var body: some View {
if let viewModel = self.someViewModel {
return filledView(with: viewModel)
}
return emptyView()
}
Run Code Online (Sandbox Code Playgroud)
此处不起作用的部分是if letSwift UI 视图构建器中的一个。
一种解决方案是有一个单独的 Bool 在加载数据时触发,或者甚至有一个枚举来识别数据何时进入以及何时不存在,但是视图代码充满了不理想的可选值检查。
例如,我想避免做类似的事情:
Image(systemName: someViewModel?.icon.symbol() ?? "plus_sign")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 60, height: 60)
.foregroundColor(Color.red)
.padding()
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。
你可以使用地图。如果它有一些价值或完全忽略它,它将解开可选项:
var body: some View {
Group {
someViewModel.map { FilledView(with: $0) }
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3559 次 |
| 最近记录: |