iPhone查看导航问题

时间:2010-07-30 11:16:35

标签: iphone transactions uiviewcontroller

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

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实例,否则视图就不会显示出来。 谢谢大家!!!

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分: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];
}

请注意,在调用pushViewController时,UINavigationController会自动创建一个后退按钮。您可以通过添加以下内容来隐藏它:

self.navigationItem.hidesBackButton = YES;
pushViewController调用的视图控制器中的

如果您仍然无法实现NavigationController,请不要犹豫。 ; - )