我有以下代码来在拆分视图控制器中推送新的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];