Как получить индекс элемента в списке в SwiftUI, когда список заполнен массивом? - PullRequest
3 голосов
/ 22 января 2020

В моем приложении SwiftUI у меня есть список элементов.

Я использую массив MenuItems для заполнения списка

struct MenuItem: Identifiable, Equatable {
                    var id = UUID()
                    var text: String
}

struct MenuView: View {

var menuItems = [MenuItem(text:"Text1"),MenuItem(text:"Text2")]

                 var body: some View {

                  List {

                                ForEach(menuItems) {textItem in

                   Text(textItem.text)

             }

        }

        }

    }

Вопрос в том, как получить индекс textItem?

Например, если я хочу иметь разные цвета строки для нечетных и четных строк, или если мне нужно реализовать разные стили для строки с номером 3?

Что такое лучший способ получить индекс элемента в списке в SwiftUI?

1 Ответ

2 голосов
/ 22 января 2020

Это можно сделать с помощью .enumerated. Для ваших MenuItem значений это будет выглядеть следующим образом:

List {
    ForEach(Array(menuItems.enumerated()), id: \.1.id) { (index, textItem) in
        // do with `index` anything needed here
        Text(textItem.text)
    }
}
...