SwiftUI: EditButton не запускает onDelete при внедрении в заголовок раздела HStack - PullRequest
1 голос
/ 22 января 2020

У меня есть раздел формы, в котором я хочу показать текст и EditButton() в той же строке заголовка, как показано ниже:

enter image description here

Проблема возникает, когда я нажимаю кнопку, когда она встроена в HStack. Текст кнопки переключается между «Редактировать» и «Готово», но не вызывает действие onDelete() для строк. Тем не менее, он работает, если он назначен только в качестве верхнего или нижнего колонтитула или встроен в групповое соглашение для Раздела.

Section(header: HStack { Text("Recent"); Spacer(); EditButton() }) {

    ForEach(locationsList, id:\.self) { location in

        Text("\(location.name)")

    }.onDelete(perform: deleteLocation)
}

Есть ли у кого-нибудь объяснение, почему мой ForEach l oop не будет реагировать на кнопку, когда она встроена в схему представления, такую ​​как HStack, VStack или даже ZStack? Есть ли альтернатива для достижения того же макета для заголовка без использования HStack?

1 Ответ

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

Похоже, потому что EditButton находится внутри списка. Это работает, если переместить EditButton из List, как показано ниже

enter image description here

VStack {
    HStack { Text("Recent"); Spacer(); EditButton() }
        .padding(.horizontal)
        .background(Color(UIColor.systemGray3))
    List{
            ForEach(locationsList, id:\.self) { location in
            ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...