我有一个List
,每个元素都有自己的HStack
,其中包含指向下一个视图的Button
和NavigationLink
,但无论何时我单击单个HStack元素,这两个元素(复选框按钮和导航链接)都会被激活.
这意味着当我单击元素时,按钮上的图标会改变,但应用程序也会加载下一个视图.当我想要通过简单地点击NavigationLink
转到下一个视图时,同样的情况也会发生.您能帮我区分这两个功能(复选框Button
和NavigationLink
)吗?
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"))
}
}
}
}