如何解决父视图更新时,SwiftUI 中的工作表冻结
使用 Swift5.3.2、iOS14.4.1、XCode12.4,
不幸的是,每当底层父视图重新渲染/更新时,工作表就会完全冻结。
我完全不知道如何规避这个问题。有什么想法吗?
这是父视图:
import SwiftUI
struct ParentTrialView: View {
@State var currentDate = Date()
@State private var showingGrid = false
let timer = Timer.publish(every: 10,on: .main,in: .common).autoconnect()
var body: some View {
NavigationView {
Text("\(currentDate)")
.onReceive(timer) { input in
currentDate = input
}
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Button(action: {
showingGrid.toggle()
}) {
Image(systemName: "square.grid.3x3")
}
.sheet(isPresented: $showingGrid) {
ChildTrialView(ondismiss: {
showingGrid = false
})
}
}
}
}
}
}
这是子视图:
import SwiftUI
struct ChildTrialView: View {
var ondismiss: () -> ()
var body: some View {
NavigationView {
Text("Trial")
.onTapGesture {
ondismiss()
}
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Button(action: {
ondismiss()
}) {
Text("Cancel")
}
}
}
}
}
}
例如,如果您将计时器设置为 20 秒。然后你有 20 秒的时间在子视图上一切正常(即它的点击手势工作,以及它的取消按钮来关闭子视图工作完美)。
然而,当定时器触发对父视图的更新时,子视图上不再有任何动作!!
我对这个 SwiftUI 问题感到非常绝望。
对此有任何解决方案吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。