目标c-检查控制器是否已加载XCode



我有以下代码来在拆分视图控制器中推送新的ViewController:

Level4ViewController *controller = [[Level4ViewController alloc] initWithNibName:@"ModuleViewController" bundle:nil];
    [[detailViewController navigationController] pushViewController:controller animated:YES];
    [controller release], controller = nil;

我唯一的问题是,如果我再次运行此程序,将显示一个新的控制器,我希望能够使用我以前的所有数据转到视图。

有人能帮我吗。

谢谢。

编辑:

是否更新了代码?

Level4ViewController *controller;
    for(UIView *view in self.navigationController.viewControllers)
    {
        if([view isKindOfClass:[Level4ViewController class]])
        {
            controller = view;
            if(controller == nil)
            {
                controller = [[Level4ViewController alloc] initWithNibName:@"ModuleViewController" bundle:nil];
            }
            else {
                controller = [self.navigationController.viewControllers objectAtIndex:1];
            }
        }
    }
    [[detailViewController navigationController] pushViewController:controller animated:YES];
    [controller release], controller = nil;

UINavigationController有一个属性viewControllers,它是一个NSArray,保存了所有推送到导航控制器的堆栈,在这个数组中,如果有视图控制器,你可以检查它。使用那个-你这样检查-

Level4ViewController *lvc;
for(UIView *view in self.navigationController.viewControllers)
{
     if([view isKindOfClass:[Level4ViewController class]])
     {
          lvc = view;
     }
}

如果你已经知道你的视图控制器在哪个索引,那么你可以从该索引中获得它作为-

Level4ViewController *lvc = [self.navigationController.viewControllers objectAtIndex:1];

更新-

Level4ViewController *controller;
for(UIView *view in self.navigationController.viewControllers)
{
     if([view isKindOfClass:[Level4ViewController class]])
     {
         controller = view;
     }
}
if(controller == nil)
{
    controller = [[Level4ViewController alloc] initWithNibName:@"ModuleViewController" bundle:nil];
}
[[detailViewController navigationController] pushViewController:controller animated:YES];
[controller release], controller = nil;

如果您使用的是导航控制器

FirstScreenViewController *firstScreenVC = [self.storyboard instantiateViewControllerWithIdentifier:@"1S"];
    if (![self.navigationController.topViewController isKindOfClass:FirstScreenViewController.class])
        [self.navigationController pushViewController:firstScreenVC animated:YES];

最新更新