gpt4 book ai didi

NavigationLink 内的 SwiftUI 按钮

转载 作者:行者123 更新时间:2023-12-02 14:58:51 25 4
gpt4 key购买 nike

我有一个列表项 View ,该 View 显示有关嵌入到 navigationLink 中的任务的一些基本信息。

我想使用 navigationLink 中的按钮来切换 task.isComplete 而无需进行任何导航。

这是我到目前为止的代码:

var body: some View {
NavigationLink(destination: TaskDetailView()) {
HStack {
RoundedRectangle(cornerRadius: 5)
.frame(width: 15)
.foregroundColor(getColor(task: task))
VStack {
Text(task.name!)
.font(.headline)
Spacer()
}
Spacer()
Button(action: {
self.task.isComplete.toggle()
}) {
if task.isComplete == true {
Image(systemName: "checkmark.circle.fill")
} else {
Image(systemName: "circle")
}
}
.foregroundColor(getColor(task: task))
.font(.system(size: 22))
}
}
}

目前,按钮操作不会执行,因为每当按下按钮时,navigationLink 都会将您带到目标 View 。我尝试将按钮放在 navigationLink 之外 - 这允许执行操作,但导航仍然会发生。

有没有办法让这成为可能?

谢谢。

最佳答案

要达到您想要的结果,您必须在 .onTapGesture 处理程序中使用其他内容,而不是 NavigationLink 上的按钮。下面的例子对我有用。

尝试替换:

Button(action: {
self.task.isComplete.toggle()
}) {
if task.isComplete == true {
Image(systemName: "checkmark.circle.fill")
} else {
Image(systemName: "circle")
}
}

与:

Image(systemName: task.isComplete ? "checkmark.circle.fill" : "circle")
.onTapGesture { self.task.isComplete.toggle() }

关于NavigationLink 内的 SwiftUI 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59401573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com