我的需求很简单,但我似乎找不到办法(许多帖子比较复杂,或者对于iOS来说是过时的。
我有一个带有NavigationLink的NavigationView,并且一切正常。由于某些原因,我想知道用户单击的项目,因为该项目用于视图上的其他操作。
我尝试在NavigationView内放置一个按钮,但是只有按钮动作会触发,但是链接不起作用。
我尝试了OnTapGesture-然后该函数会触发但不会传播,因此详细视图永远不会显示。
我想念什么?有什么办法可以做到而又不会太复杂?
ForEach(anArray, id: \.self) { entry in
NavigationLink(destination: SettingsView(s: entry)
{
Text("something")
}.onTapGesture {print("Hello")}
}
答案 0 :(得分:1)
这是解决方案,实际上使用一个执行某些操作并激活链接的按钮
通过Xcode 11.5b2测试
@State private var activatedLink: Int? = nil
// ... other code
ForEach(Array(anArray.enumerated()), id: \.element) { (i, entry) in
Button("something") {
print(">> some action")
self.activatedLink = i // << order might be important !!
}.background(
NavigationLink(destination: SettingsView(s: entry), tag: i, selection: $activatedLink) { EmptyView() }
.buttonStyle(PlainButtonStyle()) // << required !!
)
}