如何使用SwiftUI在NavigationView中正确包含“添加项目”按钮?

问题描述 投票:0回答:1

我需要NavigationViewList .navigationBarItems中的“加号” right按钮(在导航栏的右边),我想使用列表中的后续视图在列表中添加一行导航层次结构以输入其名称,等等。

enter image description here

但是首先,我什至无法获得正确导航的按钮!当我在“预览画布”中点击它时,该按钮的操作似乎起作用。然而,在实际的应用程序中,虽然它确实导航到我的目标视图,但是当我点击该视图的“

由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'试图弹出到不存在的视图控制器。'

关于如何修复以下代码的任何建议,请问?该任务是如此常见,肯定是我遗漏了某些东西并做错了。

import SwiftUI

struct ListItem: Identifiable {
    var id = UUID()
    var name: String
}

struct ContentView: View {
    var listItems = [
        ListItem(name: "List Item One"),
        ListItem(name: "List Item Two")
    ]

    var body: some View {
        NavigationView {
            List(listItems) { listItem in
                NavigationLink(destination: DetailView(existingItem: listItem)) {
                    Text(listItem.name)
                }
            }
            .navigationBarTitle(Text("Configure List Items"), displayMode: .inline)
            .navigationBarItems(trailing:
                    NavigationLink(destination: DetailView(existingItem: nil)) {
                                        Image(systemName: "plus")
                                            .resizable()
                                            .padding(6)
                                            .frame(width: 24, height: 24)
                                            .background(Color.blue)
                                            .clipShape(Circle())
                                            .foregroundColor(.white)
                                    } )
        }
    }
}

struct DetailView: View {
    var existingItem: ListItem?

    var body: some View {
        Text((existingItem != nil) ? "Edit existing: \(existingItem!.name)" : "Enter NEW List Item")
    }
}

谢谢!顺便说一句,我在MacOS Catalina 10.15.2上使用:Xcode 11.3.1

ios swift xcode swiftui navigationview
1个回答
0
投票

[NavigationLink应该在NavigationView内,而不是在导航栏中,因此以下方法适用...

© www.soinside.com 2019 - 2024. All rights reserved.