Список SwiftUI с навигационной ссылкой и кнопками - PullRequest
1 голос
/ 12 апреля 2020

У меня есть список счетчиков - каждый элемент в списке - это счетчик с номером и кнопками плюс / минус, которые пользователи могут нажимать для увеличения или уменьшения счетчика. Теперь я добавил NavigationLink, чтобы пользователи могли go в подробном представлении каждого счетчика. Проблема теперь в том, где бы вы ни щелкали в списке, детальный вид всегда выдвигается - даже если вы нажимаете одну из кнопок (счетчик увеличивается, тогда детальный вид перемещается через NavigationLink) - я хочу использовать только NavigationLink, если пользователь нажимает на номер или где-то еще, но, конечно, не если пользователи нажимают на кнопки. Как это можно сделать?

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

1 Ответ

1 голос
/ 13 апреля 2020

Я сделал этот тест, чтобы показать CounterCell с кнопками плюс и минус в NavigationView. Если вы нажмете на кнопки, счетчик увеличится, если вы нажмете на шеврон или за пределами кнопок, появится пункт назначения.

@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)")
    }
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...