我注意到当至少有一个 @State 变量经常刷新视图时,导航栏/工具栏按钮无法正常工作。
我创建了一个简单的应用程序来测试它。
在下面的代码示例中,您有 3 个选项来触发模式表。一个按钮在主视图中,一个在工具栏中,一个在导航栏中。
当我的计时器没有更新“数字”时,所有 3 个按钮都正常工作。当我启动计时器时,它将每 0,1 秒刷新一次视图,只有主视图中的按钮每次都会工作。工具栏/导航栏中的按钮大部分时间都不起作用。(我的计时器的 TimeInterval 越短,按钮的工作就越少)
import SwiftUI
struct ContentView: View {
@State private var number = 0
@State private var showModal = false
func startTimer() {
Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { (_) in
number += 1
}
}
var body: some View {
NavigationView {
VStack {
Text("Count \(number)")
Button(action: startTimer, label: {
Text("Start Timer")
})
Button(action: { showModal.toggle() }, label: {
Text("Open Modal")
})
}
.navigationBarTitle("Home", displayMode: .inline)
.navigationBarItems(leading:
Button(action: …Run Code Online (Sandbox Code Playgroud)