【发布时间】:2021-11-29 18:15:20
【问题描述】:
我正在尝试设置一个 SwiftUI .contextMenu,它带有一个可以切换 Bool 值的按钮。当Bool 切换时,上下文菜单的按钮文本应该会发生变化。但是上下文菜单不会更新。有没有办法强制更新上下文菜单?
描述问题的示例代码:
import SwiftUI
struct Item: Identifiable {
let id = UUID()
let user: String
var active: Bool
}
struct ContentView: View {
@State var items: [Item] = [
Item(user: "Daniel",active: false),
Item(user: "Jack", active: true),
Item(user: "John", active: true)
]
@State var isOn : Bool = false
var body: some View {
List {
ForEach(items) { item in
VStack {
Text("\(item.user)")
HStack {
Text("Active ? ")
Text(item.active ? "YES": "NO")
}
}.contextMenu{
Button(action: {
let index = items.firstIndex{$0.user == item.user}
items[index!].active.toggle()
}) {
Text(item.active ? "Set as Active": "Set as Inactive")
}
}
}
}
}
}
【问题讨论】:
标签: swift swiftui contextmenu swiftui-contextmenu