【发布时间】:2020-01-01 22:24:07
【问题描述】:
似乎当我创建一个视图模型并添加一个 deinit 方法时,当该视图在屏幕上不再可见时它不会被调用。
请参阅演示此的附加项目。
运行项目,点击登录按钮,您应该会看到一条控制台消息“de init not logged in view view model”,此行为是正确的,因为该视图不再可见,因此关联的视图模型已删除初始化。
但是,现在按屏幕上的“注销”按钮,这一次您将看不到 de init 消息,因为登录的视图视图模型似乎仍在某处,但是如果您再次按登录,那么您将看到 2x 消息,因此只有在重新初始化登录的视图模型时,它才会取消初始化前一个,实际上它应该已经被取消初始化。
如果我删除登录视图上的 NavigationView 包装器,那么它会按预期工作,所以我认为导航视图包装器中存在错误?还是我做错了什么?
在这里下载测试Xcode项目,因为它太复杂而无法截图,如果你运行它并查看它会更容易。Download Test Xcode Project
【问题讨论】:
-
我建议将其上传到GitHub,因为它更难信任未知站点。还要提供一些代码、图像或其他可能有帮助的东西。
-
您好,感谢您的评论。我会这样做并更新我的帖子。
标签: ios swift swiftui navigationview