首页 > 解决方案 > 按钮和列表交互修改

问题描述

我正在尝试删除我的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。对于我的应用程序,我不想拥有它。有没有办法将“selectionStyle”设置为List“none”?

标签: swiftui

解决方案


有许多 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
        }
    }
}

推荐阅读