Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何恰当地包括;加上项目“;使用SwiftUI的NavigationView中的按钮?_Ios_Swift_Xcode_Swiftui_Navigationview - Fatal编程技术网

Ios 如何恰当地包括;加上项目“;使用SwiftUI的NavigationView中的按钮?

Ios 如何恰当地包括;加上项目“;使用SwiftUI的NavigationView中的按钮?,ios,swift,xcode,swiftui,navigationview,Ios,Swift,Xcode,Swiftui,Navigationview,我需要一个“加号”⊕ 我的导航视图列表.navigationBarItems(导航栏上的右侧)中的按钮,我想使用导航层次结构中的后续视图输入其名称等,将其添加到列表中 但首先,我甚至不能让按钮正确导航!当我在预览画布中点击它时,按钮的操作似乎有效。然而,在实际的应用程序中,当它导航到我的目的地视图时,当我点击该视图的“

我需要一个“加号”⊕ 我的
导航视图
列表
.navigationBarItems
(导航栏上的右侧)中的按钮,我想使用导航层次结构中的后续视图输入其名称等,将其添加到列表中

但首先,我甚至不能让按钮正确导航!当我在预览画布中点击它时,按钮的操作似乎有效。然而,在实际的应用程序中,当它导航到我的目的地视图时,当我点击该视图的“ 由于未捕获的异常“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

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() }
        }
    }
}

没有内置组件吗?@Alexander-我想知道同样的事情!有
EditButton()
及其相关功能,还有一些其他UI元素,其中“加号按钮”可用于添加操作,但在这个NavigationView的情况下,它有点让我大吃一惊,2020年我将不得不滚动自己的按钮(甚至使用
图像(系统名:
等)。