为了完成一个富于表现力的App,我们经常要在SwiftUI的众多视图中恣意穿梭导航。
不过有时我们会遇到一些奇怪的导航行为:
如上图所示,我们在根视图中导航进入了 Apple 项目对应的详情子视图,随后我们在子视图中将Apple项目所处的分类修改为 Default ,此时原来显示的详情子视图被提前退出了,我们竟然直接返回到了根视图。
要说明的是,该问题只在最新的iOS 15 中出现,而在iOS 14中一切正常。
为什么iOS 15中导航栈会提前退出呢?
在本篇博文中,我们将披露NavigationLink的一个隐藏陷阱。
Let’s find out!!!
问题分析 1. SwiftUI中的导航机制大家都知道,SwiftUI界面中的一切改变都由状态来驱动,导航自然也不例外。
利用NavigationView容器,我们可以利用其中NavigationLink绑定状态的变化来灵活的实现根视图到各个子视图的导航功能。