在下面的示例中,如何根据SwiftUI更新aArrived和bArrived的方式来更改activeSheet的值
struct ContentView: View {
@AppStorage("didAArrive") var aArrived: Bool = false
@AppStorage("didBArrive") var bArrived: Bool = false
enum ActiveSheet: Identifiable {
case aArrived, bArrived
var id: Int {
hashValue
}
}
@State private var activeSheet: ActiveSheet?
var body: some View {
Text("Hello")
.sheet(
item: $activeSheet,
content: { item in
switch item {
case .aArrived:
Text("A arrived")
case .bArrived:
Text("B arrived")
}
}
)
}
}发布于 2021-07-18 06:40:10
您可以为根据aArrived和bArrived获取其值的工作表创建自定义绑定。绑定值将基于aArrived或bArrived进行初始化,并在每次更改时进行更新。
struct ContentView: View {
@AppStorage("didAArrive") var aArrived: Bool = false
@AppStorage("didBArrive") var bArrived: Bool = false
enum ActiveSheet: Identifiable {
case aArrived, bArrived
var id: Int {
hashValue
}
}
var body: some View {
let sheetBinding = Binding<ActiveSheet?>(
get: {
if aArrived && bArrived {
return ActiveSheet.aArrived
} else if aArrived {
return ActiveSheet.aArrived
} else if bArrived {
return ActiveSheet.bArrived
} else {
return nil
}
},
set: { _ in }
)
VStack(spacing: 20) {
Toggle("A arrived", isOn: $aArrived)
Toggle("B arrived", isOn: $bArrived)
}
.sheet(
item: sheetBinding,
content: { item in
switch item {
case .aArrived:
Text("A arrived")
case .bArrived:
Text("B arrived")
}
}
)
}
}https://stackoverflow.com/questions/68422631
复制相似问题