【问题标题】:Reset member variable of environmentObject after it is set but before view is drawn在设置后但在绘制视图之前重置 environmentObject 的成员变量
【发布时间】:2021-10-15 04:42:59
【问题描述】:

我正在制作应用程序的身份验证部分(登录、注册、忘记密码页面)。因为我有一个函数可以处理我为所有不同事务(登录、注销、注册用户等)调用的错误,如果它捕获到该错误,那么它将自定义消息设置为我的视图模型(环境对象)中的变量然后由屏幕上的视图观察到,并相应地将其绘制到屏幕上。

问题是,如果我在登录页面中遇到错误并说导航到忘记密码,那么该错误仍会保存在该 viewmodel 变量中,并且由于从忘记密码页面也观察到它,因此即使它显示在此页面上也是如此与它无关。 (这发生在所有屏幕之间,而不仅仅是这两个屏幕之间)。我想到的解决方法是在每次导航到新页面时重置变量,但是我不知道如何快速执行此操作。使用 swiftUI

我尝试使用 init 块并在那里重置变量,但是 init 在我的 environmentObject 初始化之前运行,因此我无法在那里设置成员变量。

【问题讨论】:

    标签: swiftui swiftui-navigationlink swiftui-environment


    【解决方案1】:

    我最终在每个屏幕的最高视图上使用了 .onAppear(perform:{ //reset variable here}) ,它就像一个魅力,或者我可以在 oldScreen 上使用 .onDisappear() 来产生类似的效果效果

    【讨论】:

      猜你喜欢
      • 2014-07-21
      • 1970-01-01
      • 2020-09-27
      • 1970-01-01
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      • 2018-12-31
      • 2013-11-15
      相关资源
      最近更新 更多