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
。对于我的应用程序,我不想拥有它。有没有办法将“selectionStyle”设置为List
“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
}
}
}
推荐阅读
- flutter - Flutter:如何向图像添加缩放功能
- java - Fabric - 加载游戏时 EntrypointException 崩溃
- java - 在 Swing 中自动组装拼图游戏(带有矩形瓷砖)的简单算法的问题
- python - Python中的顺序前向选择,特征名称有问题吗?
- pyspark - 设置 PYSPARK_SUBMIT_ARGS="--name" "PySparkShell" "pyspark-shell" && jupyter notebook
- python - 将表情符号对象转换为 unicode
- google-cloud-functions - Cloud Schedule + Cloud Functions -> Gmail API watch() - WORKING NOW
- javascript - 输入数据不变。阿贾克斯
- docker - 创建一个允许容器之间通信但不能访问互联网的网络
- c++ - 我怎么能理解用户在 cmd 窗口上按下了 X 按钮?