按钮和列表交互的修改

时间:2019-08-27 18:15:47

标签: swiftui

我正在尝试删除List行的“ sectionStyle”。为了获得类似于tableview的视图,您需要编写以下内容:

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”?

1 个答案:

答案 0 :(得分:1)

我无法更改许多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
        }
    }
}