这就是崩溃的样子:
所以它在UIKit那一行随机崩溃。
UIKitCore
-[UIViewController _ancestorViewControllerOfClass:allowModalParent:] + 44
我在默认的SwiftUI导航堆栈中有一个视图:
struct MyView: View {
@EnvironmentObject var viewModel: MyViewModel
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
var body: some View {
ZStack {
......
}
.onAppear {
self.viewModel
.onViewAppear(presentationMode: self.presentationMode)
}
}
}
final class MyViewModel {
var presentationMode: Binding<PresentationMode>?
func onViewAppear(presentationMode: Binding<PresentationMode>) {
self.presentationMode = presentationMode
}
func hide() {
presentationMode?.wrappedValue.dismiss() // crashes after calling this
}
}
我这样将MyView推入导航栈:
NavigationLink(
destination: MyView()
) {
Image(systemName: "plus.circle")
.font(.title)
}
然后,在用户在MyView中按下按钮几秒钟后,我会在MyViewModel中调用hide()
。大多数情况下它可以正常工作,但在5-10%的情况下会崩溃。
MyView().environmentObject(viewModel)
吗?似乎视图模型不会在那个初始化器中设置。 - Pranav Kasetti