我需要在NavigationView
的{{1}} List
(在导航栏的右边)上添加一个“加号”⊕按钮,我想在列表中添加一行,使用导航层次结构中的后续视图输入其名称,等等。
但是首先,我什至无法获得正确导航的按钮!当我在“预览画布”中点击它时,该按钮的操作似乎起作用。然而,在实际的应用程序中,虽然它确实导航到我的目标视图,但是当我点击该视图的“ <返回”按钮时,该应用程序崩溃并显示为:
由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“试图弹出到不存在的视图控制器。”
请问我如何解决以下代码的任何建议?这项任务是如此普遍,肯定是我遗漏了某些东西并做错了。
.navigationBarItems
谢谢!顺便说一句,我在MacOS Catalina 10.15.2上使用:Xcode 11.3.1
答案 0 :(得分:6)
NavigationLink
应该在NavigationView
内,而不是在导航栏中,因此以下方法适用...
@State private var addMode = false
var body: some View {
NavigationView {
VStack {
List(listItems) { listItem in
NavigationLink(destination: AddDetailView(existingItem: listItem)) {
Text(listItem.name)
}
}
.navigationBarTitle(Text("Configure List Items"), displayMode: .inline)
.navigationBarItems(trailing: Button(action: {
// button activates link
self.addMode = true
} ) {
Image(systemName: "plus")
.resizable()
.padding(6)
.frame(width: 24, height: 24)
.background(Color.blue)
.clipShape(Circle())
.foregroundColor(.white)
} )
// invisible link inside NavigationView for add mode
NavigationLink(destination: AddDetailView(existingItem: nil),
isActive: $addMode) { EmptyView() }
}
}
}