2010-07-30 114 views
0

我有3个基于视图的应用程序。为了从不同的视图导航,我使用委托方法,例如在第二个视图中,我有一个委托,它是对第一个视图的引用,当我想从第二个视图传递到第一个视图时,我调用代表,这很简单:[self dismissModalViewControllerAnimated:YES];。 现在的问题是,我需要做这件事:iPhone视图导航问题

1 ---> 2 ---> 3 ---> 1。所以我想回到第三个观点。使用dismissModalViewControllerAnimated,我可以看到我刚过第二个视图,然后到达第一个视图。如果可能的话,我想避免这件事。我发现使用[self.navigationController popToRootViewControllerAnimated:NO];的可能性,我试图用它来代替dismissModalViewControllerAnimated,但程序做了任何事情。

更新
问题解决了,每一个问题是由的UINavigationController不正确的初始化所致。我找到一个解决方案,以正确初始化它在我的AppDelegate文件中:

UINavigationController* controller=[[UINavigationController alloc] initWithRootViewController:viewController]; 
    controller.navigationBarHidden=TRUE; 
    [window addSubview:controller.view]; 
    [window makeKeyAndVisible]; 

现在一切工作正常,这让我感到困惑的唯一的事情是,我不能释放我的controller实例,否则就会无法diplay。 谢谢大家!

回答

0

要使[self.navigationController popToRootViewControllerAnimated:NO];函数正常工作,您需要在代码中添加UINavigationController。你做了吗?

0

如果你想,你有可能创建一个基于Xcode的项目导航。它可以帮助你。完成后。要实现你的视图体系结构,这里是你如何做到的。

在View1Controller.m

- (IBAction)goToView2 
{ 
    View2Controller *view2 = [[View2Controller alloc] init]; 
    [self.navigationController pushViewController:view2 animated:YES]; 
    [view2 release]; 
} 

在View2Controller.m

- (IBAction)goToView3 
{ 
    View3Controller *view3 = [[View3Controller alloc] init]; 
    [self.navigationController pushViewController:view3 animated:YES]; 
    [view3 release]; 
} 

在View3Controller.m

- (IBAction)goToView1 
{ 
    [self.navigationController popToRootViewControllerAnimated:YES]; 
} 

需要注意的是,UINavigationController的自动创建一个返回按钮,调用pushViewController当。您可以通过添加以下内容来隐藏它:

self.navigationItem.hidesBackButton = YES; 

在由pushViewController调用的视图控制器中。

如果您仍然遇到实施NavigationController的麻烦,请不要犹豫,问。 ;-)

+0

不要发布多个答案。相反,编辑您的原始答案以添加更多详细信息。 – 2010-07-30 18:31:38

+0

对不起。我会在下次做;-) – Niko 2010-07-30 19:02:54