我有一个基于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
实例,否则视图就不会显示出来。
谢谢大家!!!
答案 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,请不要犹豫。 ; - )