带有 NavigationLink 和按钮的 SwiftUI 列表
SwiftUI List with NavigationLink and Buttons
我有一个计数器列表 - 列表中的每个元素都是一个带有数字的计数器,用户可以单击 plus/minus 按钮来增加或减少计数器。现在我添加了一个 NavigationLink,以便用户可以转到每个柜台的详细视图。现在的问题是,无论您在列表上单击什么地方,都会始终推送详细视图 - 即使您单击其中一个按钮(计数器增加,然后通过 NavigationLink 推送详细视图) - 我只想在用户使用 NavigationLink 时使用单击数字或其他地方,但如果用户单击按钮当然不会。如何做到这一点?
NavigationView {
List {
ForEach(counters, id: \.self) { counter in
NavigationLink(destination: SingleCounterView(currentCounter: counter)) {
CounterCell(counter: counter)
}
}
}
.buttonStyle(PlainButtonStyle())
.listStyle(GroupedListStyle())
}
我进行了此测试,以在 NavigationView 中显示带有加号和减号按钮的 CounterCell。如果您点击按钮,计数器会增加,如果您点击 V 形或按钮外部,则会出现目的地。
@State var counters = ["a","b","c"]
var body: some View {
NavigationView {
List {
ForEach(counters, id: \.self) { counter in
NavigationLink(destination: Text(counter)) {
CounterCell(counter: counter)
}
}
}
.buttonStyle(PlainButtonStyle())
.listStyle(GroupedListStyle())
}.navigationViewStyle(StackNavigationViewStyle())
}
struct CounterCell: View {
@State var counter: String
@State var inc = 0
var body: some View {
HStack {
Button(action: { self.inc += 1 }) {
Text("plus")
}
Button(action: { self.inc -= 1 }) {
Text("minus")
}
Text(" counter: \(counter) value: \(inc)")
}
}
}
我有一个计数器列表 - 列表中的每个元素都是一个带有数字的计数器,用户可以单击 plus/minus 按钮来增加或减少计数器。现在我添加了一个 NavigationLink,以便用户可以转到每个柜台的详细视图。现在的问题是,无论您在列表上单击什么地方,都会始终推送详细视图 - 即使您单击其中一个按钮(计数器增加,然后通过 NavigationLink 推送详细视图) - 我只想在用户使用 NavigationLink 时使用单击数字或其他地方,但如果用户单击按钮当然不会。如何做到这一点?
NavigationView {
List {
ForEach(counters, id: \.self) { counter in
NavigationLink(destination: SingleCounterView(currentCounter: counter)) {
CounterCell(counter: counter)
}
}
}
.buttonStyle(PlainButtonStyle())
.listStyle(GroupedListStyle())
}
我进行了此测试,以在 NavigationView 中显示带有加号和减号按钮的 CounterCell。如果您点击按钮,计数器会增加,如果您点击 V 形或按钮外部,则会出现目的地。
@State var counters = ["a","b","c"]
var body: some View {
NavigationView {
List {
ForEach(counters, id: \.self) { counter in
NavigationLink(destination: Text(counter)) {
CounterCell(counter: counter)
}
}
}
.buttonStyle(PlainButtonStyle())
.listStyle(GroupedListStyle())
}.navigationViewStyle(StackNavigationViewStyle())
}
struct CounterCell: View {
@State var counter: String
@State var inc = 0
var body: some View {
HStack {
Button(action: { self.inc += 1 }) {
Text("plus")
}
Button(action: { self.inc -= 1 }) {
Text("minus")
}
Text(" counter: \(counter) value: \(inc)")
}
}
}