我的应用程序中有一个UIViewController,其中包含问题,mcqs答案及其相关分数。
我在其他控制器中推动这个控制器,即
QuestionViewController *questionController = [delegate getQuestionScreen];
// If Iphone/iPod Touch
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
// If iPhone 5 or new iPod Touch
if([UIScreen mainScreen].bounds.size.height == 568){
questionController = [[QuestionViewController alloc] initWithNibName:@"QuestionViewController" bundle:nil];
} else{
// Regular iPhone
questionController = [[QuestionViewController alloc] initWithNibName:@"QuestionViewController_iPhone4" bundle:nil];
}
}
questionController.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;
[self.navigationController pushViewController:questionController animated:NO];
当我在这个控制器上时,我打开侧面菜单(如facebook)和新控制器的选择选项,说帮助控制器......
DemoViewController *demoController = [[DemoViewController alloc] initWithNibName:@"HelpViewController_iPhone4" bundle:nil];
UINavigationController *navigationController = self.menuContainerViewController.centerViewController;
NSArray *controllers = [NSArray arrayWithObject:demoController];
navigationController.viewControllers = controllers;
[self.menuContainerViewController setMenuState:MFSideMenuStateClosed];
当我回到之前的QuestionViewController屏幕时,我必须创建该控制器的新对象,结果我丢失了所有的计算和旧数据,因为它很新。
如何存储旧的Controller以再次导航或在该特定状态下重复使用。
如果对问题不清楚,请问我.......
答案 0 :(得分:1)
请不要这样做:
NSArray *controllers = [NSArray arrayWithObject:demoController];
navigationController.viewControllers = controllers;
因为它要求导航控制器丢弃所有当前视图。
相反,推动新控制器。
如果由于某种原因您无法推送它,请创建一个实例变量(NSArray
)并在替换它之前使用它来存储navigationController.viewControllers
,然后您可以在以后恢复它。