从模态视图使用 NavigationLink 的 SwiftUI 推送视图
Posted
技术标签:
【中文标题】从模态视图使用 NavigationLink 的 SwiftUI 推送视图【英文标题】:SwiftUI Push View with NavigationLink from modal view 【发布时间】:2021-09-28 14:10:20 【问题描述】:我通过按“展示我的模式”按钮来展示带有fullScreenCover
的模式视图:
struct ContentView: View
@State var presentMyModal = false
var body: some View
Text("Hello, world!")
.fullScreenCover(isPresented: $presentMyModal)
MyModalView()
Button(action: presentMyModal = true ,
label: Text("present my modal"))
然后我想用NavigationLink
从这个模态推送一个新视图:
struct MyAlertView: View
@State var pushNavigationLinkedView = false
var body: some View
Text("MyAlertView")
.padding()
Button(action: pushNavigationLinkedView = true ,
label: Text("push navigation linked view"))
NavigationLink(destination: NavigationLinkedView(),
isActive: $pushNavigationLinkedView)
EmptyView()
这是我的NavigationLinkedView
:
struct NavigationLinkedView: View
var body: some View
Text("NavigationLinkedView")
.padding()
但是当我按下“推送导航链接视图”按钮时没有任何反应。
那么苹果指南是否允许从模态视图推送带有NavigationLink
的视图?如果是,最好的方法是什么?
在 ios15 和 XCode 13 上测试
【问题讨论】:
【参考方案1】:Apple 指南是否允许从模态视图推送带有
NavigationLink
的视图?
是的。只要确保在MyAlertView
的基础上有一个NavigationView
。模态表创建了一个新的视图层次结构,NavigationLink
仅在上面的层次结构中某处存在NavigationView
时才有效。
【讨论】:
以上是关于从模态视图使用 NavigationLink 的 SwiftUI 推送视图的主要内容,如果未能解决你的问题,请参考以下文章
从目标视图返回时,SwiftUI NavigationLink 显示为突出显示
SwiftUI - 使工具栏的 NavigationLink 使用详细视图
NavigationLink 101:如何将数据从主机发送到辅助视图?