【问题标题】:SwiftUI on MacOS: Call a function when NavigationLink ClickedMacOS 上的 SwiftUI:单击 NavigationLink 时调用函数
【发布时间】:2020-05-11 02:45:36
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: swiftui swiftui-navigationlink


    【解决方案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 !!
            )
       }
    

    【讨论】:

    • 非常聪明,我今天晚些时候试试。 Asperi - 你似乎是个 Swift 天才 :)
    猜你喜欢
    • 2020-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 2023-04-04
    • 2021-10-08
    • 2020-03-31
    相关资源
    最近更新 更多