Есть ли способ передать (индексировать), какая кнопка была нажата в ForEach в SwiftUI? - PullRequest
1 голос
/ 25 февраля 2020

Здравствуйте, замечательные помощники!

Я пытаюсь загрузить подробный вид с правильной информацией из массива в мой MotherView при нажатии кнопки ForEach.

Я не знаю, как передать, какая карта была нажата, чтобы запомнить индекс, когда я затем пытаюсь загрузить свой DetailView с той же информацией. Это последний «указатель», который меня отталкивает. Если я заменю его на [0], он будет отображаться, все хорошо, но только примеры данных из первого элемента. Кто-нибудь может помочь очень разочарованному кодировщику fre sh?

    ZStack {
        ScrollView(.horizontal) {
            HStack {
                Button(action: {self.showDetailView.toggle()}) {
                    ForEach(flowerData) { index in
                        FlowerCard(flower: self.flower)
                    }

                }

            }
        }

        if showDetailView {
            FlowerDetailView(flower: self.flower[index]
        }
    }

1 Ответ

0 голосов
/ 25 февраля 2020

Почему бы не использовать кнопку (или даже onTapGesture) для каждой карты, например (нечеткая)

@State private var clickedCard: Int? = nil
...

ForEach(flowerData) { index in
    Button(action: {
        self.clickedCard = index // << store in member
        self.showDetailView.toggle()
    }) {
        FlowerCard(flower: self.flower)
    }
}

...
    if showDetailView && index != nil {
        FlowerDetailView(flower: self.flower[index!]
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...