首页 > 解决方案 > 如何根据 Swift 中的条件更新全局变量的相应副本?

问题描述

所以我在视图控制器中有 3 个全局变量(我们称它们为 A、B、C),当应用程序导航到和离开此视图控制器时,我需要更新它们以保留过滤器选择的状态。我在其他 2 个视图控制器之间共享一个过滤器视图控制器,因为它们都引用它。但是,他们需要使用自己的 3 个全局变量集,以确保根据不同的标准保存和清除这些变量的状态。

基本上,我有 2 个具有相同高级过滤器 UI 的相似页面。应用过滤器后,我将状态保存到其中 3 个变量中,以便在再次调用它们时恢复它们在 UI 中的状态。但是,VC1 的过滤器状态在整个应用程序生命周期中保持保存,而 VC2 的过滤器状态仅在用户在该页面上时保存。如果用户离开,VC2 的过滤器选择状态将被重置。鉴于我必须为两者管理 2 个全局变量副本,在 filterVC 中保存单独状态的最佳方法是什么?

到目前为止,我将使用基本的 if 条件检查来查看过滤器是从哪个页面引用的,以确定要读取/写入的全局变量的版本。每次引用这些全局变量(13 个实例)时,我都会进行 if 条件屏幕检查以读取或写入相应 VC 的全局变量。请注意,过滤器 UI 是一个独立的全屏页面,它有自己的 VC,在单击按钮时会调用它,所以为了在过滤器 UI 被关闭并重新打开时恢复 VC2 在 filterVC 中的选择状态,我有在全局变量中建立该状态,以便可以在 filterVC 中访问它。然而,即使这种方法有效,它似乎也不是最理想的,所以我正在寻找一种更好的方法来解决它。

为简单起见,请参见下文:

2个视图控制器:VC1、VC2

VC1、VC2 使用的 3 个全局变量的单独副本:A、B、C

1个共享过滤器UI视图控制器:filterVC

标签: iosswiftglobal-variables

解决方案


推荐阅读