我刚刚将 Xcode 更新到 12.5 版。从那以后,我的 NavigationLink 代码出现了问题。将出现子视图,但是当我按下取消按钮返回父视图时,我在日志中收到错误消息。
无法呈现。请提交一个错误。
这在 Xcode 12.4 中没有发生。我恢复到 Xcode 12.4,问题就消失了。我安装了 12.5 作为辅助应用程序,并编写了一些通用视图来演示该问题。
我已经阅读并看到,如果我在一个视图上只有两个导航链接,则不会出现问题。但这将是对我的应用程序的重大重新设计......如果有的话,我真的可以使用更好的解决方案。TIA 鲍勃
import SwiftUI
struct SetupMenuView: View {
var body: some View {
NavigationView {
VStack(alignment: .leading) {
Divider().background(Color.black)
NavigationLink(destination: SubView01()) {
Text("SubView01")
.foregroundColor(.black)
.font(.largeTitle)
}
.padding(.leading, 25)
Divider().background(Color.black)
NavigationLink(destination: SubView02()){
Text("SubView02")
.foregroundColor(.black)
.font(.largeTitle)
}
.padding(.leading, 25)
Divider().background(Color.black)
NavigationLink(destination: SubView03()) {
Text("SubView03")
.foregroundColor(.black)
.font(.largeTitle)
}
.padding(.leading, 25)
Divider().background(Color.black)
NavigationLink(destination: SubView04()) {
Text("SubView04")
.foregroundColor(.black)
.font(.largeTitle)
}
.padding(.leading, 25)
Divider().background(Color.black)
// }
} // VSTACK END
.padding(.top, 25)
.frame(minWidth: 0,
maxWidth: .infinity,
minHeight: 0,
maxHeight: .infinity,
alignment: .topLeading
)
.navigationBarTitle("SubView Menu Setup", displayMode: .inline)
}
.navigationViewStyle(StackNavigationViewStyle())
}
}
struct SetupMenuView_Previews: PreviewProvider {
static var previews: some View {
SetupMenuView()
}
}
import SwiftUI
struct SubView01: View {
@Environment(\.presentationMode) var presentationMode
var body: some View {
ZStack {
VStack {
Text("This is the sub view 01.")
.font(.largeTitle)
}
}
.navigationBarBackButtonHidden(true)
.navigationBarTitle("SubView01", displayMode: .inline)
.navigationBarItems(
leading:
Button(action: {
self.presentationMode.wrappedValue.dismiss()
}, label: {
Text("Cancel")
})
,
trailing:
HStack {
EditButton()
.padding()
}
)
}
}
struct SubView01View_Previews: PreviewProvider {
static var previews: some View {
SubView01()
}
}
import SwiftUI
struct SubView02: View {
@Environment(\.presentationMode) var presentationMode
var body: some View {
ZStack {
VStack {
Text("This is the sub view 02.")
.font(.largeTitle)
}
}
.navigationBarBackButtonHidden(true)
.navigationBarTitle("ASubView02",displayMode: .inline)
.navigationBarItems(
leading:
Button(action: {
self.presentationMode.wrappedValue.dismiss()
}, label: {
Text("Cancel")
})
, trailing:
HStack {
EditButton()
.padding()
}
)
}
}
struct SubView02_Previews: PreviewProvider {
static var previews: some View {
SubView02()
}
}
import SwiftUI
struct SubView03: View {
@Environment(\.presentationMode) var presentationMode
var body: some View {
ZStack {
VStack {
Text("This is the sub view 03.")
.font(.largeTitle)
}
}
.navigationBarBackButtonHidden(true)
.navigationBarTitle("SubView03", displayMode: .inline)
.navigationBarItems(
leading:
Button(action: {
self.presentationMode.wrappedValue.dismiss()
}, label: {
Text("Cancel")
})
,
trailing:
HStack {
EditButton()
.padding()
}
)
}
}
struct SubView03_Previews: PreviewProvider {
static var previews: some View {
SubView03()
}
}
import SwiftUI
struct SubView04: View {
@Environment(\.presentationMode) var presentationMode
var body: some View {
ZStack {
VStack {
Text("This is the sub view 04.")
.font(.largeTitle)
}
}
.navigationBarBackButtonHidden(true)
.navigationBarTitle("SubView04", displayMode: .inline)
.navigationBarItems(
leading:
Button(action: {
self.presentationMode.wrappedValue.dismiss()
}, label: {
Text("Cancel")
}
)
,
trailing:
HStack{
EditButton()
.padding()
}
)
}
}
struct SubView04_Previews: PreviewProvider {
static var previews: some View {
SubView04()
}
}