1

我的需求很简单,但我似乎想不出办法(许多帖子相当复杂或旧/适用于 iOS)。

我有一个带有 NavigationLink 的 NavigationView,一切正常。出于某些原因,我想知道用户单击的项目,因为它用于视图上的其他操作。

我尝试在 NavigationView 中放置一个按钮,但随后仅触发按钮操作,但链接不起作用。

我尝试了 OnTapGesture - 然后该函数触发但没有传播,因此详细视图永远不会出现。

我错过了什么?有什么方法可以做到这一点而不会过于复杂?

ForEach(anArray, id: \.self) { entry in
    NavigationLink(destination: SettingsView(s: entry)
    {
         Text("something")
    }.onTapGesture {print("Hello")}
}

4

1 回答 1

2

这是解决方案,实际上使用一个按钮来执行一些操作并激活一个链接

使用 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 !!
        )
   }
于 2020-05-11T03:43:08.440 回答