SwiftUI带有NavigationLink和按钮的列表

4

我有一个计数器列表 - 列表中的每个元素都是一个带有数字和加号/减号按钮的计数器,用户可以单击这些按钮来增加或减少计数器。现在,我添加了一个 NavigationLink,以便用户可以进入每个计数器的详细视图。问题是现在不管你在列表上点击哪里,详细视图总是会被推出来 - 即使你点击其中一个按钮(计数器增加,然后通过 NavigationLink 推出详细视图) - 我只想在用户单击数字或其他地方时使用 NavigationLink,但当然不是在用户单击按钮时。怎么做呢?

NavigationView {
        List {
            ForEach(counters, id: \.self) { counter in
                NavigationLink(destination: SingleCounterView(currentCounter: counter)) {
                    CounterCell(counter: counter)
                }
            }
        }
        .buttonStyle(PlainButtonStyle())
        .listStyle(GroupedListStyle())
}
1个回答

8
我制作了这个测试,展示了一个带有加号和减号按钮的计数器单元格,它被放置在一个导航视图中。如果您点击按钮,计数器会递增;如果您点击chevron或按钮之外的区域,则会出现目标视图。
@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)")
    }
}
}

感谢您的回答。我已经添加了自定义ButtonStyle,而ScaleEffect在某种程度上改变了这种行为。struct PlusButton: ButtonStyle { func makeBody(configuration: Self.Configuration) -> some View { configuration.label .scaleEffect(configuration.isPressed ? 0.8 : 1.0) } } - 2092Juli
我已经将您的按钮样式添加到加号按钮中,它对我仍然有效。 - workingdog support Ukraine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接