我可以让iOS UINavigationController处于相同状态吗?

时间:2013-07-17 06:56:08

标签: ios uiviewcontroller

我的应用程序中有一个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以再次导航或在该特定状态下重复使用。

如果对问题不清楚,请问我.......

1 个答案:

答案 0 :(得分:1)

请不要这样做:

    NSArray *controllers = [NSArray arrayWithObject:demoController];
    navigationController.viewControllers = controllers;

因为它要求导航控制器丢弃所有当前视图。

相反,推动新控制器。

如果由于某种原因您无法推送它,请创建一个实例变量(NSArray)并在替换它之前使用它来存储navigationController.viewControllers,然后您可以在以后恢复它。