在Storyboard中使用viewController类的一个实例

所以我遇到了另一个小问题,花了早上试图弄清楚。 几乎没有成功。

我正在Xcode 5中编写一个iOS7应用程序,其中包含故事板。 在应用程序的一部分,我需要三个共享相同viewController类的屏幕。 这些屏幕是UIViewControllers 。 我使用UISegmentControl根据条件从屏幕切换到屏幕。 如果用户没有完成某些步骤,我禁用了该控件。

我使用BOOL值检查某些步骤是否已完成,并将其值设置为YES / NO.

问题是当我想回到最后一个屏幕 – 我正在得到我的viewController类的新实例。 这有两个问题:

  1. 每次用户在两个视图之间都会增加内存
  2. 当新实例加载时,BOOL值和所有其他属性均为零。

在我的细分控制中,我是这样看待观点的:

 -(void)segmentcontrol:(UISegmentedControl *)segment { if (segment.selectedSegmentIndex == 0) { self.viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"stepOne"]; [self presentViewController:self.viewController animated:NO completion:nil]; } else if (segment.selectedSegmentIndex == 1 ){ self.viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"stepTwo"]; [self presentViewController:self.viewController animated:NO completion:nil]; }else { } } 

这个viewController是我的BaseViewController一个子类 – 我用于所有屏幕上不变的UI元素。

当我使用相同的类将段控件更改为另一个视图时,我想要做的是返回viewController类的同一个实例。

这是可能吗?

一如既往地欣赏帮助

谢谢

不清楚你为什么使用presentViewController:animated:completion:但是看起来你正在做的事情是错误的。

你想要做的是创build一个容器控制器。 因此,托pipe分段控件的视图控制器创build了许多视图控制器实例,并将它们添加为子视图控制器。 现在,select细分时,您将在所选索引处获取子项,从其超级视图中删除旧视图控制器视图,并将新视图控制器视图添加为子视图。

你不需要这样做,但它可能是最干净的。 你的记忆因为使用了instantiateViewControllerWithIdentifier: 。 所有你真正需要做的是保持一个视图控制器的数组,而不是重新创build。 这就是说,不断地提出视图控制器是不明智的。