swift - SwiftUI contextMenu 显示以前的值
问题描述
我对 SwiftUI ContextMenu 有一个奇怪的问题,很可能是一个错误,但也许其他人已经找到了解决方法。我将其简化为:
struct ContentView: View {
@State var number = 20
let timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()
var body: some View {
Text("\(number)")
.padding()
.background(Color.green)
.contextMenu {
Button(action: {}) {
Image(systemName: "star")
Text("Test")
}
}
.onReceive(timer) { _ in
if self.number > 0 {
self.number -= 1
}
}
}
}
当 contextMenu 第一次出现时,会显示正确的数字。但是第二次出现contextMenu时,还是显示了contextMenu的第一个值。
解决方案
您可以使用以下技巧使计数持久化。
@State var number : Int = 20
@State var showNUmber : Bool = true
let timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()
var body: some View {
Group{
if self.showNUmber {
Text("\(self.number)").padding()
.background(Color.green)
.contextMenu{
Button(action: {
}) {
Image(systemName: "star")
Text("Test")
}
}.onLongPressGesture( pressing: { _ in
self.showNUmber = false
}, perform: {
})
}else{
Text("\(self.number)").padding()
.background(Color.green)
.contextMenu{
Button(action: {
}) {
Image(systemName: "star")
Text("Test")
}
}.onLongPressGesture( pressing: { _ in
self.showNUmber = true
}, perform: {
})
}
}.onReceive(timer) { _ in
if self.number > 0 {
self.number -= 1
}
}
}
推荐阅读
- python - 如何在 django 框架中使用 pg_trgm 操作符(例如 %>)?
- javascript - 如何通过 NAT 流式传输 WebRTC 音频?
- c - 有没有随机遍历数组的方法?
- java - 无法在 Spring Boot mvc 中解析视图名称
- c - 如何获得C中数组中两个索引的总和?
- react-native - BorderStyle:Dash 在本机反应中无法正常工作
- excel - 将自动突出显示行应用于活动单元格到excel中的整个工作簿
- import - 如何将 json 文件从我的桌面导入到我的笔记本?
- data-structures - 此伪代码的大 O 表示法
- java - Java 更改数组数据未显示在输出中