Переключение кнопки Swiftui

#ios #swiftui

#iOS #swiftui

Вопрос:

У меня есть серия кнопок, подобных этой:

 ForEach(context.items){item in
    Button(action: {
        self.variableSelection.toggle()
    }) {
        Text("(item)")
        if self.variableSelection{
            Text("Extra text")
        }
        
    }
    
}
  

Что происходит, так это:
Появляется список элементов, и когда я нажимаю кнопку, внизу каждой кнопки появляется «Дополнительный текст».

Чего я хотел, так это чтобы «Дополнительный текст» отображался только под кнопкой, которую я нажал. Как я могу этого добиться?

Спасибо

Ответ №1:

Извлеките строку в отдельный вид, чтобы каждая строка имела собственное состояние развернутого / свернутого, например

 struct ItemRowView: View {
  let item: String

  @State private var variableSelection = false

  var body: some View {
    Button(action: {
        self.variableSelection.toggle()
    }) {
        Text("(item)")
        if self.variableSelection{
            Text("Extra text")
        }
        
    }
  }
}
  

итак, теперь цикл

 ForEach(context.items){item in
   ItemRowView(item: item)    
}