我正在勾勒出一个应用程序的工作流程,其中你有一个主菜单’Level 0′,它调用一个模态视图’Level 1′,它调用另一个模态视图’Level 2′.
我能够使这个工作,没有问题我可以使用以下方法解雇整个堆栈:
[[[self parentViewController] parentViewController] dismissModalViewControllerAnimated:YES];
在模态视图’Level 2’中.
我的问题是当模态视图’Level 2’有导航栏时我无法忽略整个堆栈.我上面列出的代码只会让我回到一个级别,所以它的行为与我这样做完全相同:
[self dismissModalViewControllerAnimated:YES];
在模态视图’2级’.
摘要:
当模态视图’Level 1’使用以下方法调用模态视图’Level 2’时:
Level2 *level2 = [[[Level2 alloc] initWithNibName:@"Level2" bundle:nil] autorelease];
[self presentModalViewController:portalMainController animated:YES];
我可以关闭整个堆栈并返回主菜单(级别0).但是当“等级1”使用如下导航栏调用“等级2”时:
Level2 *level2 = [[[Level2 alloc] initWithNibName:@"Level2" bundle:nil] autorelease];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:level2];
[self presentModalViewController:navigationController animated:YES];
[navigationController release];
我无法回到’0级’,我只回到’1级’.
有什么建议?
最佳答案 我会为2级控制器创建一个协议,例如Level2Delegate.然后将2级控制器的委托设置为1级控制器.然后你可以做类似以下的事情:
2级控制器将实现此功能,其中self.delegate是1级控制器
[self.delegate controllerDidFinish:self];
1级将实施:
- (void)controllerDidFinish:(Level2Controller *)controller {
[[self parentViewController] dismissModalViewControllerAnimated:NO];
}
关键是建立一系列事件而不是试图同时解雇两者.