我建立一个应用程序与下面的页面流(这是一个很大的复杂,所以我会尽量尽可能明确):如何获得推塞格斯,遏制控制器,和故事一起工作
登录 - > MainViewController
现在,MainViewController使用控制器围堵在iOS 5中举办两个视图/控制器:
MainViewController
/ \
FirstController SecondController --> DetailsController
从SecondController,我想原因请看单独视图控制器(你可以把它看成“详细信息“如果你认为MainViewController为”m紫苑“)。
从SecondController,我可以继续使用“模态”segue到DetailsController。但是当我“回弹”时,iOS会重新加载MainViewController。我不希望它那样做。
如果我使用“推”segue,我得到一个运行时错误,说在栈上没有UINavigationControllers。精细。
那么我想接下来是我试图让MainViewController一个新的UINavigationController的根控制器:
Login --> UINavigationController --> DetailsController (but "initiated" by Second)
|
MainViewController
/ \
FirstController SecondController
然后再从SecondController,我告诉UINavigationController的执行“推” SEGUE。但我仍然得到相同的运行时错误 - 找不到UINavigationController。
我不明白导航堆栈是如何工作的 - 它可能没有检查调用者,因为我确定我正在调用performSegueWithIdentifier:来自UINavigationController。
我在使用“你的第二个iOS应用程序”作为指导,并且他们开了这个方法(modal segue)。但我真的不想重新加载MainViewController,如果可能的话(它正在做一些昂贵的事情)。我宁愿iOS“缓存”我的视图/控制器/数据。我当然可以在加载详细信息页时编写代码来缓存我的数据,并重新加载缓存,而不是在我弹出时重新计算数据,但我希望“推”继续会自动为我执行此操作。
如果你们有任何想法,我将不胜感激。谢谢。
当你说“回弹”,你实际上使用popViewController:animated:?你有没有试过从DetailsController [self.presentingViewController dismissModalViewControllerAnimated:]回到SecondController? – rdelmar
对不起 - 这就是我的意思是“回弹” - dismissModalViewControllerAnimated :.它强制“父”视图重新加载。 – tng