我想首先突出我的视图层次结构。我只有FindUserView
和WelcomeView
。
FindUserView
如果输入的电子邮件存在,则用于从服务器检索用户。如果是这样,那么它会自动将我重定向到下一个WelcomeView
我可以输入密码和登录的地方。
我在这里创建了一个 repo和一个视频SwiftUI - Pop back does not deallocate view
我的FindUserView
:---------------------------- 和WelcomeView
:
通过按下 NEXT 按钮,FindUserView
我从数据库中获取用户:
func fetchUser(with email: String) {
userService.getUser(with: email) { (result) in
switch result {
case .success(_):
self.showActivityIndicator = false
self.showingAlert = false
self.showWelcomeView = true
break
case .failure:
self.showingAlert = true
break
}
}
}
我使用并通过更改上面的状态以NavigationView
编程方式显示:WelcomeView
showWelcomeView
NavigationLink(destination: WelcomeView(), isActive: $showWelcomeView) { EmptyView() }
现在我处于欢迎状态WelcomeView
。
但是当我按下这个按钮并弹回来时,我的WelcomeView
仍然存在。
当我使用@EnvironmentObject
可观察的属性状态时,我看到它如何反映到已经被忽略的视图中。这是正确的行为吗?还是我需要以WelcomeView
某种方式解除分配?它会导致内存泄漏吗?
我有点担心,因为当您在导航堆栈中弹出视图控制器时,通过自动从数组中删除视图控制器来UIKit
释放它。UINavigationController
如何在 SwiftUI 中正确弹回?