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