我有一个表单部分,我想在同一标题行中显示一些文本和EditButton(),如下所示:

ios - SwiftUI:嵌入到HStack Section header 中时,EditButton不会触发onDelete-LMLPHP

每当我将按钮嵌入到HStack中时,只要轻按该按钮,就会发生此问题。按钮文本在“编辑”和“完成”之间切换,但不会为行调用onDelete()操作。但是,如果仅将其分配为页眉,页脚或嵌入到该节的组安排中,则它确实可以工作。

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

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

        Text("\(location.name)")

    }.onDelete(perform: deleteLocation)
}

有没有人有任何理由为什么我的ForEach循环在嵌入到诸如HStack,VStack甚至ZStack之类的视图排列中时不会对按钮做出响应?有没有其他方法可以在不使用HStack的情况下实现标头的相同布局?

最佳答案

看起来是因为EditButton在列表内。如果将EditButtonList中移出,则如下所示

VStack {
    HStack { Text("Recent"); Spacer(); EditButton() }
        .padding(.horizontal)
        .background(Color(UIColor.systemGray3))
    List{
            ForEach(locationsList, id:\.self) { location in
            ...

关于ios - SwiftUI:嵌入到HStack Section header 中时,EditButton不会触发onDelete,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59851275/

10-12 14:35