ตัวอย่างที่ทำซ้ำได้น้อยที่สุด (Xcode 11.2 เบต้าทำงานได้ใน Xcode 11.1):
struct Parent: View {
var body: some View {
NavigationView {
Text("Hello World")
.navigationBarItems(
trailing: NavigationLink(destination: Child(), label: { Text("Next") })
)
}
}
}
struct Child: View {
@Environment(\.presentationMode) var presentation
var body: some View {
Text("Hello, World!")
.navigationBarItems(
leading: Button(
action: {
self.presentation.wrappedValue.dismiss()
},
label: { Text("Back") }
)
)
}
}
struct ContentView: View {
var body: some View {
Parent()
}
}
ปัญหาที่ดูเหมือนว่าจะโกหกในการวางของฉันNavigationLink
ภายในnavigationBarItems
ปรับปรุงที่อยู่ภายในที่ซ้อนกันในมุมมองของ SwiftUI NavigationView
มีรากมุมมองเป็น รายงานความผิดพลาดแสดงให้เห็นว่าฉันพยายามที่จะปรากฏไปยังตัวควบคุมมุมมองที่ไม่อยู่เมื่อฉันนำทางคอยที่จะแล้วกลับไปChild
Parent
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Tried to pop to a view controller that doesn't exist.'
*** First throw call stack:
ถ้าฉันจะวางที่NavigationLink
ในร่างกายของมุมมองเช่นด้านล่างมันทำงานได้ดี
struct Parent: View {
var body: some View {
NavigationView {
NavigationLink(destination: Child(), label: { Text("Next") })
}
}
}
นี่เป็นข้อบกพร่องของ SwiftUI หรือพฤติกรรมที่คาดหวังหรือไม่?
แก้ไข: ฉันได้เปิดปัญหากับ Apple ในผู้ช่วยติชมด้วย ID FB7423964
ในกรณีที่ทุกคนที่นั่นจาก Apple ใส่ใจที่จะชั่งน้ำหนักใน :)
แก้ไข: ตั๋วที่เปิดอยู่ของฉันในตัวช่วยให้ข้อเสนอแนะบ่งชี้ว่ามีปัญหาที่รายงานที่คล้ายกัน 10+ รายการ พวกเขาได้อัปเดตความละเอียดด้วยResolution: Potential fix identified - For a future OS update
แล้ว นิ้วกำลังข้ามที่การแก้ไขจะมาถึงในไม่ช้า
แก้ไข: สิ่งนี้ได้รับการแก้ไขใน iOS 13.3!
ContentView.swift
ผมก็พยายามสร้างโครงการสดและคัดลอกโค้ดที่แน่นอนในสถานที่ของ ฉันจะแก้ไขโพสต์ แต่ความผิดพลาดจะเกิดขึ้นเฉพาะเมื่อคุณนำทางไปข้างหน้าและย้อนกลับ