@State变量无缘无故重置 [iOS 15 SwiftUI]

5

我正在使用 @State 变量来存储一些导航链接的标签。但是在 iOS 15 中,我注意到每当我进入后台时,状态变量会被重置,这导致当我重新进入应用时,视图无缘无故地弹出。

@State private var userNavigateSelection: String? = nil

NavigationLink(destination: TestView(), tag: TestTag, selection: $userNavigateSelection) { EmptyView() }

我使用了一个onChange方法来监控"userNavigateSelection"的变化,每次我进入后台时,"userNavigationSelection"都会变成nil。我不知道为什么会这样。

2
使用简单的复制代码可以正常工作 - Xcode 13.3 / iOS 15.4。可能原因在于不同的代码 - 提供了最小可重现示例。 - Asperi
如果您能提供一个简单的可重现的示例,那么这将有助于我们调查问题。如果您无法重现该问题,则该问题可能存在于您代码的其他地方。 - Muhand Jumah
1个回答

0

也许你的包含 @State 变量的视图在返回前台后被从视图层次结构中移除了。尝试将此变量提升到更高的层次结构中,并传递给包含 NavigationLink 和 @Binding 的视图。 参考链接:https://www.ralfebert.com/swiftui/state-lifetime/


这个问题仍然发生在我身上,因为一旦应用程序进入后台,变量就会改变。我将导航链接更改为全屏覆盖以临时解决此问题。我不知道为什么。 - JonathanLiu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接