在菜单中使用 NavigationLink (SwiftUI) [英] Using NavigationLink in Menu (SwiftUI)

查看:56
本文介绍了在菜单中使用 NavigationLink (SwiftUI)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你可以在 swiftUI 中使用 NavigationLink 作为 Menu 的项目吗?

Can you use a NavigationLink as a Menu's item in swiftUI?

它似乎什么也没做:

Menu {
   NavigationLink(destination: Text("test1")) {
       Text("item1")
   }
   NavigationLink(destination: Text("test2")) {
       Text("item2")
   }
} label: {
   Text("open menu")
}

如果它不能像上面尝试的那样工作,是否有其他方法可以实现预期的结果?

In case it is meant to not work as tried above, is there an alternative way of achiving the intended reult?

推荐答案

NavigationLink 应该在 NavigationView 层次结构中.Menu 在导航视图之外,因此将按钮放在菜单内,激活放置在导航视图内的导航链接,例如.隐藏在背景中.

NavigationLink should be inside NavigationView hierarchy. The Menu is outside navigation view, so put buttons inside menu which activate navigation link placed inside navigation view, eg. hidden in background.

这是一个可能的方法的演示(使用 Xcode 12.1/iOS 14.1 测试)

Here is a demo of possible approach (tested with Xcode 12.1 / iOS 14.1)

struct DemoNavigateFromMenu: View {
    @State private var navigateTo = ""
    @State private var isActive = false
    var body: some View {
        NavigationView {
            Menu {
                Button("item1") {
                    self.navigateTo = "test1"
                    self.isActive = true
                }
                Button("item2") {
                    self.navigateTo = "test2"
                    self.isActive = true
                }
            } label: {
                Text("open menu")
            }
            .background(
                NavigationLink(destination: Text(self.navigateTo), isActive: $isActive) {
                    EmptyView()
                })
        }
    }
}

这篇关于在菜单中使用 NavigationLink (SwiftUI)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆