按钮和列表交互修改

Button and List interaction modifications

我正在尝试删除 List 行的 "sectionStyle"。为了实现类似表视图的视图,您将编写以下内容:

List(items, id: \.id) { item in
  ItemRow(with: item)
}

如果你想解释每一行的点击事件,你可以将 ItemRow 包装成 Button:

List(items, id: \.id) { item in
  Button(action: rowTapped) { 
    ItemRow(item: item)
  }
}

有趣的是,当List知道Button时,它会像tableView的selectionStyle一样自动给出选择动画。对于我的应用程序,我不想有那个。有没有办法将 List 的 "selectionStyle" 设置为 "none"?

有许多 List 行为,我无法更改。如果您有不同于系统列表视图的特定需求,则构建您自己的列表非常容易。这是我使用过的一个简单示例。

struct MyListView:View {
    var body: some View {
        ScrollView {
            ForEach(items, id: \.id) { item in
                VStack {
                    Button(action: self.rowTapped) {
                        ItemRow(item: item)
                    }
                    Divider()
                }
            }
        }.padding()
    }
    func rowTapped() {
        print("rowTapped")
    }
}

struct ItemRow:View {
    var item:Item

    var body: some View {
        HStack {
            Text(item.name)
            Spacer()            // force text to left justify
        }
    }
}