我有一个基本的模态视图系统。
我的应用加载了UI基础,其中有2个按钮呈现2个其他视图。 在这些视图中,有一个关闭按钮。
一切正常。
但是,在2个模态视图中的一个中,我有一堆UISlider& UISwitch。 我希望它们保留它们的值,但是忽略了它们:只要我触发按钮以显示包含UI元素的视图,就会显示该视图,其中包含我最初放在xib中的所有元素的所有值。
我应该将所有值存储在变量中,然后在viewWillAppear中我可以“回忆”它们吗?
你会建议我另一种策略吗?答案 0 :(得分:2)
创建模态视图时,您正在创建modalViewController的新实例和modalView。这个新实例对任何其他实例一无所知。有几种方法可以保留这些模态视图控制器的先前迭代中的信息。
我该怎么做: 在主视图中设置占位符,并通过协议和委托设置将用户选择的值传递回主视图。然后,当您转到模态视图时,可以在显示模态视图之前加载这些变量。
所以假设你有一个包含所有值的字典:{slider = YES,someValue = 10,...}在主视图控制器中创建该字典,打开第一个字典,并在其中放置一些默认值它
在模态视图中,控制器会创建与属性相同的字典。
使用类似
的方法在模态视图控制器中创建协议 - (void) doneEditing:(NSDictionary *)values
将第一个视图设置为模态视图控制器的委托,并在doneEditing
的实现中将值复制到弹出模态视图之前第一个视图中的字典。
当第一个视图准备好再次显示模态视图时,请在显示之前将值复制到模态视图的字典属性中。
我希望这会让你朝着正确的方向前进。重要的是要记住,每次你设置或创建和呈现模态视图时,你正在创建一个全新的视图实例,它根本不知道前一个实例,除非你告诉它一些事情。
答案 1 :(得分:2)
是的,你提议的方法是正确的。不过要小心;可以调用viewWillAppear有很多原因;确保你只在视图控制器出现并且第一次显示视图时才这样做。
NSUserDefaults可以是存储全球所需信息的绝佳场所。在viewWillDisappear中,以默认值存储所需的状态信息(滑块和开关的值)。然后在下次出现视图时检索它们。