我有一个List,每个元素都有自己的HStack,其中包含指向下一个视图的ButtonNavigationLink,但无论何时我单击单个HStack元素,这两个元素(复选框按钮和导航链接)都会被激活.

这意味着当我单击元素时,按钮上的图标会改变,但应用程序也会加载下一个视图.当我想要通过简单地点击NavigationLink转到下一个视图时,同样的情况也会发生.您能帮我区分这两个功能(复选框ButtonNavigationLink)吗?

struct ContentView: View {
    @ObservedObject var spendingList: SpendingList
    
    var body: some View {
        NavigationView {
            List {
                ForEach($spendingList.spendings) { $spending in
                    HStack{
                        Button(action: {
                            spending.Bought = !spending.Bought
                        }, label: {
                            if spending.Bought == false {
                                Image(systemName: "square")
                                    .foregroundColor(.accentColor)
                            } else {
                                Image(systemName: "checkmark.square")
                                    .foregroundColor(.accentColor)
                            }
                        })
                        
                        NavigationLink(destination: DetailView(spending: $spending)
                            .navigationTitle(Text(spending.Name)),
                                       label: {
                            Text(spending.Name).frame(maxWidth: .infinity, alignment: .leading)

                            if spending.Price != 0 {
                                Text(String(spending.Price)).frame(maxWidth: .infinity, alignment: .trailing)
                            } else {
                                Text("empty").foregroundColor(.gray)
                            }
                        })
                    }
                }
                .navigationTitle(Text("Spending Priority"))
            }
        }
    }
}

推荐答案

默认样式Button&;NavigationLink使整行单击为一个.但是,使用PlainButtonStyle()可以通过使按钮可单击而不是单元格来解决此问题:

.buttonStyle(.plain)//to your button & NavigationLink

Ios相关问答推荐

无法在所有窗口上方显示图像

RxSwift:如何使用另外两个可观测对象(其中一个依赖于另一个)创建可观测对象?

围绕对象旋转和移动相机不起作用Swift SceneKit

归档时命令 PhaseScriptExecution 失败,退出代码非零

iOS 16 中的状态栏 colored颜色

从iOS键盘输入时Flutter TextField输入消失

使用 Foundation 解压缩文件

iOS SwiftUI - 从以前的 struct 调用函数

有没有办法访问自动生成的 Codable 一致性的编码键?

如何在保持纵横比的同时zoom UIView 的内容以适应目标矩形?

通过按钮打开 AppStore

在 UICollectionView 上从右到左对齐

如何 comments .plist 文件中的行?

如何在通用应用程序中同时支持 iPad 和 iPhone 视网膜图形

Swift tableView 分页

UIView 和 initWithFrame 以及一个 NIB 文件.如何加载 NIB 文件?

UITableView 背景 colored颜色 在 iPad 上总是白色

你如何以编程方式从视图控制器中画一条线?

AFNetworking 发布请求

Xcode 6 进程启动失败:try 启动应用程序超时