Swiftui Scrollview изменить цвет текста на TapGesture - PullRequest
1 голос
/ 18 марта 2020

Я хочу изменить цвет элемента Text на TabGesture для имитации выбранного элемента, при нажатии цвета текста должен быть красный и другой текст черный.

           ScrollView(.horizontal, showsIndicators: false) {
                HStack(spacing: 10) {
                    ForEach(newsFeed.subcategoryListNews) { item in
                        Text(item.name)
                            .font(Font.custom("AvenirNextLTPro-Demi", size: 17))
                            .foregroundColor(Color.black)
                            .onTapGesture {
                                //Chage color and reset other Text, active red not active black
                            }
                    }
                }
                .padding(.top, 30)
                .padding(.horizontal, 30)

            }.padding(.bottom, 10)

Большое спасибо

1 Ответ

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

Это должно соответствовать вашему типу предмета Equatable (если это еще не так), тогда возможен следующий подход

@State private var selectedItem: <Item_Type_Here>? = nil

...

ForEach(newsFeed.subcategoryListNews) { item in
    Text(item.name)
        .font(Font.custom("AvenirNextLTPro-Demi", size: 17))
        .foregroundColor(self.selectedItem == item ? Color.red : Color.black))
        .onTapGesture {
            self.selectedItem = item
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...