न्यूनतम प्रतिलिपि प्रस्तुत करने योग्य उदाहरण (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संशोधक के अंदर रखने में झूठ लगती है जिसका मूल दृश्य ए है 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") })
}
}
}
क्या यह एक स्विफ्टयूई बग या अपेक्षित व्यवहार है?
संपादित करें: मैंने Apple के साथ उनके फीडबैक सहायक में ID के साथ एक समस्या खोली है, जब कोई FB7423964Apple से वजन कम करने की कोशिश करता है।
संपादित करें: प्रतिक्रिया सहायक में मेरा खुला टिकट इंगित करता है कि 10 + समान रिपोर्ट किए गए मुद्दे हैं। उन्होंने संकल्प के साथ अद्यतन किया है Resolution: Potential fix identified - For a future OS update। फिंगर्स ने तय किया कि जल्द ही फिक्स भूमि।
संपादित करें: यह iOS 13.3 में तय किया गया है!
ContentView.swift। मैं पोस्ट को संपादित करूँगा, लेकिन क्रैश केवल तब होता है जब आप आगे और फिर वापस नेविगेट करते हैं।