在Storyboard中使用viewController类的一个实例
所以我遇到了另一个小问题,花了早上试图弄清楚。 几乎没有成功。
我正在Xcode 5中编写一个iOS7应用程序,其中包含故事板。 在应用程序的一部分,我需要三个共享相同viewController
类的屏幕。 这些屏幕是UIViewControllers
。 我使用UISegmentControl
根据条件从屏幕切换到屏幕。 如果用户没有完成某些步骤,我禁用了该控件。
我使用BOOL
值检查某些步骤是否已完成,并将其值设置为YES / NO.
问题是当我想回到最后一个屏幕 – 我正在得到我的viewController类的新实例。 这有两个问题:
- 每次用户在两个视图之间都会增加内存
- 当新实例加载时,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。 这就是说,不断地提出视图控制器是不明智的。