iOS16迁移:NavigationStack无法自动弹出登录视图求助
你的代码问题出在NavigationStack的结构上——navigationDestination修饰符需要绑定到栈内的某个根视图,而非直接放在NavigationStack的闭包中。另外,初始状态的showLogin = true可能因视图初始化时机问题无法触发导航,改用onAppear显式触发会更可靠。
修改后的代码如下:
@State private var showLogin: Bool = false NavigationStack { EmptyView() .navigationDestination(isPresented: $showLogin) { sysPassView(showLogin: $showLogin).environmentObject(defaults) } .onAppear { // 视图加载完成后触发登录视图弹出 showLogin = true } }
如果坚持使用初始状态为true,也可以调整结构确保根视图存在:
@State private var showLogin: Bool = true NavigationStack { EmptyView() .navigationDestination(isPresented: $showLogin) { sysPassView(showLogin: $showLogin).environmentObject(defaults) } }
核心要点:
navigationDestination必须附加到NavigationStack内部的某个视图(比如这里的EmptyView)- 用
onAppear触发状态变更,能避免视图初始化顺序导致的导航失效问题
内容的提问来源于stack exchange,提问作者SamCodes
相关产品推荐
相关产品推荐

