Щелчок слушателя в пользовательском представлении запускает все представления - PullRequest
0 голосов
/ 10 марта 2020

Когда я нажимаю на один Chip, на мой взгляд, он запускает действия во всех чипах. Например, если я нажму на фишку «Дата», я ожидаю выполнения self.viewModel.showDateSelection.toggle(). Это выполняется, но так же self.viewModel.showTypeSelection.toggle() и self.viewModel.showPointsSelection.toggle(). Я не могу понять, почему нажатие на один чип вызовет действия на всех чипах.

Экран

struct EventsScreen: View {

    @EnvironmentObject
    var viewModel: EventsViewModel

    //...

    var body: some View {
        GeometryReader { geometry in
            List {
                ZStack(alignment: .top) {
                    // ...
                    VStack {
                        // ...
                        HStack {
                            Spacer()
                            Chip(text: "Dates", action:  {
                                self.viewModel.showDateSelection.toggle()
                            })
                            Chip(text:"Type", action: {
                                self.viewModel.showTypeSelection.toggle()
                            })
                            Chip(text: "Points", action: {
                                self.viewModel.showPointsSelection.toggle()
                            })
                            Spacer()
                        }
                    }
                }
                // ...
            }
        }
    }
}

Чип

struct Chip: View {
    var text: String
    var action: () -> Void
    var body: some View {
        Button(action: self.action) {
        HStack {
            Text(text).foregroundColor(Color.white)
            Image("drop_down").foregroundColor(Color.white)
        }
        .padding(EdgeInsets.init(top: 4, leading: 16, bottom: 4, trailing: 16))
        .background(Color.black)
    .cornerRadius(40)
        }

    }
}

1 Ответ

1 голос
/ 11 марта 2020

в SwiftUI по-прежнему возникает проблема с несколькими кнопками в элементе списка.

. Вы можете использовать текст с onTapGesture вместо кнопки, чтобы обойти это, если

относится к этому SwiftUI - несколько кнопок в строке списка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...