Ios 通过代码永久隐藏Interface Builder上的项目

Ios 通过代码永久隐藏Interface Builder上的项目,ios,uiview,uiviewcontroller,interface-builder,swift3,Ios,Uiview,Uiviewcontroller,Interface Builder,Swift3,我有个奇怪的问题。无论是在SO还是通过google,都无法通过搜索找到解决方案 我的UIViewController中有一个UIView,由情节提要引导。 此ui视图通过界面生成器设置为隐藏 基于某些逻辑,我需要在某一点上揭示这个UIView 非常简单:myView.ishiden=false 问题是,每次加载myUIViewController时,它都会覆盖以前发生的任何事情—例如取消隐藏视图—并再次将视图设置为隐藏 是否有一种永久隐藏的智能方法,或者我应该选择UserDefaults存储值并

我有个奇怪的问题。无论是在SO还是通过google,都无法通过搜索找到解决方案

我的
UIViewController
中有一个
UIView
,由情节提要引导。 此
ui视图
通过界面生成器设置为隐藏

基于某些逻辑,我需要在某一点上揭示这个
UIView

非常简单:
myView.ishiden=false

问题是,每次加载my
UIViewController
时,它都会覆盖以前发生的任何事情—例如取消隐藏视图—并再次将视图设置为隐藏

是否有一种永久隐藏的智能方法,或者我应该选择UserDefaults存储值并加载到
视图中,每次都会出现

谢谢你的建议

注意:我正在用
Swift3
语法编码

*******************编辑*******************

更清楚地说: 我有一堆自定义弹出窗口,它们位于一个专用的故事板文件上。每个弹出窗口都有一个
UIViewController

这些弹出窗口基本上是成就弹出窗口。它们有三颗星,默认情况下都是隐藏的(通过它们持有的3
UIImageView
上的IB属性)

在应用程序中,如果用户取得了某种成就,我将从情节提要文件调用相关的UIViewController,并显示(取消隐藏)相关的成就。就这样

主要风险投资:

let viewController = UIStoryboard(name: "AchievementsPopUp", bundle: nil).instantiateViewController(withIdentifier: "Category1PopUp")
viewController.modalPresentationStyle = .overCurrentContext
self.present(viewController, animated: true, completion: nil)
在相关的类文件中,我通过星号代码取消隐藏并向用户显示。一旦用户关闭POUPVC返回主POUPVC,该UIImageView的“un hide”属性将丢失。 我已经解决了在UserDefaults上使用一个属性的问题,这个属性工作得很好。 问题是,我必须创建15个不同的属性(5个屏幕,每个屏幕有3颗星),并管理相关代码,这些代码变得有点凌乱:-) 如果有更聪明的解决方案,我很乐意实施

你应该看看

保存和恢复过程基本上是自动的,但您需要告诉iOS您的应用程序的哪些部分需要保存。保存应用程序的视图控制器的步骤如下:

  • (必需)为要保留其配置的视图控制器分配恢复标识符;请参见标记视图控制器以进行保存
  • (必需)告诉iOS如何在启动时创建或定位新的view controller对象;请参见在启动时还原视图控制器
  • (可选)对于每个视图控制器,存储将该视图控制器返回其原始配置所需的任何特定配置数据;请参见编码和解码视图控制器的状态
  • 你应该看一看

    保存和恢复过程基本上是自动的,但您需要告诉iOS您的应用程序的哪些部分需要保存。保存应用程序的视图控制器的步骤如下:

  • (必需)为要保留其配置的视图控制器分配恢复标识符;请参见标记视图控制器以进行保存
  • (必需)告诉iOS如何在启动时创建或定位新的view controller对象;请参见在启动时还原视图控制器
  • (可选)对于每个视图控制器,存储将该视图控制器返回其原始配置所需的任何特定配置数据;请参见编码和解码视图控制器的状态

  • 每次从情节提要加载场景时,将根据情节提要设置属性。您需要在中编写一些代码,例如,
    viewDidLoad
    以根据需要隐藏或取消隐藏视图谢谢@Paulw11这正是我要做的“变通方法”。但看起来这不是一个解决办法,而是一种正常的行为。每次从情节提要加载场景时,属性都将根据情节提要进行设置。您需要在中编写一些代码,例如,
    viewDidLoad
    以根据需要隐藏或取消隐藏视图谢谢@Paulw11这正是我要做的“变通方法”。但看起来这不是一个解决办法,而是一种正常的行为。谢谢你的回答@picciano。我不是100%确定我在问题中所描述的情况。状态配置更多的是关于你的应用程序何时进入后台或被停止以防止内存泄漏。在恢复其组件(UI)时,也会根据恢复点重新生成它们。就我而言,我永远不会离开这个应用程序。只需在应用程序生命周期中多次加载相同的情节提要-->UIViewController。也许我的问题不是100%清楚,我会尝试用一些例子来编辑。谢谢你的回答@picciano。我不是100%确定我在问题中所描述的情况。状态配置更多的是关于你的应用程序何时进入后台或被停止以防止内存泄漏。在恢复其组件(UI)时,也会根据恢复点重新生成它们。就我而言,我永远不会离开这个应用程序。只需在应用程序生命周期中多次加载相同的情节提要-->UIViewController。也许我的问题不是100%清楚,我会尝试用一些例子来编辑。