我有一个奇怪的问题。无法通过SO搜索或谷歌搜索找不到解决方案。
我的UIView
中有UIViewController
,由故事板引导。
通过Interface Builder将此UIView
设置为隐藏。
基于某些逻辑,我需要揭示这个UIView
。
非常简单:myView.isHidden = false
问题是,每次加载UIViewController
时,它都会覆盖之前发生的任何事情 - 例如取消隐藏视图 - 并将视图再次设置为隐藏。
是否存在永久隐藏的智能方法,或者我应该使用UserDefaults存储值并每次将其加载到ViewWillAppear
中?
感谢任何可能的建议。
注意:我使用Swift3
语法编码
******************* EDIT *******************
为了更清楚:
我有一堆自定义弹出窗口,它们位于专用的故事板文件中。每个弹出窗口都有一个UIViewController
。
这些弹出窗口基本上是成就弹出窗口。它们有3颗星,默认情况下都是隐藏的(通过它们持有的3 UIImageView
上的IB属性)。
在应用程序中,如果用户达到某种成就,我将从该故事板文件中调用相关的UIViewController并显示(取消隐藏)相关的已实现的明星。就像那样。
主要VC:
let viewController = UIStoryboard(name: "AchievementsPopUp", bundle: nil).instantiateViewController(withIdentifier: "Category1PopUp")
viewController.modalPresentationStyle = .overCurrentContext
self.present(viewController, animated: true, completion: nil)
在相关的类文件中,我通过代码取消隐藏星形并呈现给用户。一旦用户关闭popupVC返回到主要的那个,那么UIImageView的“un-hide”属性就会丢失。 我已经解决了在UserDefaults上使用一个非常好用的属性。 问题是我必须创建15个不同的属性(5个屏幕,每个3星)并管理相关的代码变得有点凌乱:-) 如果有更智能的解决方案,我将很乐意实施!
答案 0 :(得分:0)
你应该看看Apple's documentation for Preserving and Restoring State。
保存和恢复过程大多是自动的,但您需要告诉iOS应用程序的哪些部分要保留。保留应用程序视图控制器的步骤如下: