Ios 将SwiftUI警报或操作表绑定到值类型模型属性的可选性(当属性为nil时显示视图)的好方法是什么?
SwiftUI警报和操作表采用布尔绑定,但我希望在模型属性为Ios 将SwiftUI警报或操作表绑定到值类型模型属性的可选性(当属性为nil时显示视图)的好方法是什么?,ios,swift,swiftui,Ios,Swift,Swiftui,SwiftUI警报和操作表采用布尔绑定,但我希望在模型属性为nil时显示我的。模型属性是var servicePlayer:Player,我希望在网球发球选手还未被选中时提供一份警告或行动表(nil),但我不确定什么是解决这个问题的好方法 我的模型层由值类型structs组成,因此目前不能将属性标记为@Published。将我的整个模型层重构为类引用类型,以便能够采用Combine(我依赖于模型实例是值类型副本来撤消和重做),这听起来不值得,但我可能错了 struct Match: Codabl
nil
时显示我的。模型属性是var servicePlayer:Player代码>,我希望在网球发球选手还未被选中时提供一份警告或行动表(nil
),但我不确定什么是解决这个问题的好方法
我的模型层由值类型struct
s组成,因此目前不能将属性标记为@Published
。将我的整个模型层重构为类
引用类型,以便能够采用Combine(我依赖于模型实例是值类型副本来撤消和重做),这听起来不值得,但我可能错了
struct Match: Codable {
...
var servicePlayer: Player!
...
}
.alert(isPresented: $isPresented) {
Alert(title: Text("Who will serve?"),
primaryButton: .default(Text("You")) {
match.servicePlayer = .playerOne
},
secondaryButton: .default(Text("Opponent")) {
match.servicePlayer = .playerTwo
})
}
$isPresented
绑定只是一个占位符。由于servicePlayer
开始时为nil
,因此,我们的想法是在网球比赛中,当servicePlayer再次为nil
且尚未被选中时,警报将首先出现,但也会在网球比赛中再次出现。正如您可能理解的那样,.alert的参数需要绑定
我假设Match
在您的视图中是一个@State
属性:
struct ContentView: View {
@State var match: Match
var body: some View { ... }
}
这意味着,当更改时,视图将重新计算。这意味着您可以使用Binding.constant(bool)
:
由于警报
将通过更改匹配来修改状态
,因此最好显示一些最小值code@NewDev我刚刚添加了代码的相关部分,谢谢。
.alert(isPresented: .constant(match.servicePlayer == nil)) {
Alert(...)
}