list - 如何在 SwiftUI 列表行中独立选择复选框按钮和 NavigationLink 到另一个视图
问题描述
我希望像待办事项列表一样制作一个列表,单元格有一个复选框和文本。我希望在选择列表单元格时,可以将视图转换为 detailView。同时我也可以选中复选框,但不要触发视图转换为detailView。
我删除了 List{},代码运行正常,但是 List 属性和方法不能再使用了。所以我打算编写一个客户列表视图。但我不认为这将是一个好方法。所以如果我仍然找不到好的方法来制作它,我最后可能会以这种方式实现。
NavigationView {
VStack {
List {
ForEach(todayDietModel.todayDietItems) { item in
NavigationLink(destination: DietItemDetailView()) {
TodayDietRow(todayDietItem: item)
.animation(.spring())
}
}
}
}
.frame(width: 352, height: 400)
.background(Color.white)
.cornerRadius(16)
}
struct TodayDietRow: View {
@State var isFinished: Bool = false
var body: some View {
HStack(spacing: 20.0) {
Button(action: {self.isFinished.toggle()}) {
if self.isFinished {
Image("icon_checked_s001")
.resizable()
.renderingMode(.original)
.aspectRatio(contentMode: .fit)
.frame(width: 24, height: 24)
} else {
Image("icon_unchecked_s001")
.resizable()
.frame(width: 24, height: 24)
}
}
.padding(.leading, 10)
Text("DietName")
.font(.system(size:13))
.fontWeight(.medium)
.foregroundColor(Color.black)
}
.frame(width: 327, height: 48)
}
}
解决方案
这与复选框图像上的手势配合得很好。两个按钮不起作用,因为每次点击都转到两个按钮。
struct TodayTodoView2: View {
@ObservedObject var todayDietModel = TodayDietModel()
func image(for state: Bool) -> Image {
return state ? Image(systemName: "checkmark.circle") : Image(systemName: "circle")
}
var body: some View {
NavigationView {
VStack {
List {
ForEach($todayDietModel.todayDietItems) { (item: Binding<TodayDietItem>) in
HStack{
self.image(for: item.value.isFinished).onTapGesture {
item.value.isFinished.toggle()
}
NavigationLink(destination: DietItemDetailView2(item: item)) {
Text("DietNamee \(item.value.dietName)")
.font(.system(size:13))
.fontWeight(.medium)
.foregroundColor(Color.black)
}
}
}
}
.background(Color.white)
}
}
}
}
推荐阅读
- php - Laravel Eloquent 如何根据类别 id 获取所有产品
- java - Dijkstra算法如何使其工作定向
- excel - 根据 A 列中选定单元格中的值突出显示 B 列中的值(Excel VBA)
- android - Android BiometricPrompt 抛出 NPE
- node.js - 握手不活动超时错误 AWS node.js
- html - CSS:文本输入在选中时有另一个边框
- node.js - Node.js:CSV 在 mac os(数字)上正确显示,但在 windows(excel)上显示全部混乱
- python - 将 CNN 的输出传递给 BILSTM
- python - 将列表中的值映射到没有时间顺序的已知字典格式
- c# - 如何在 docker 容器中运行这个 PowerShell 脚本?