当用户添加新的foo时,我的应用程序使用模态视图。用户使用此模态视图选择foo类型。根据选择的类型,需要向用户询问更多信息。
我想使用另一个模态视图来询问这些额外信息。我试图像第一个一样创建新的模态视图(效果很好),并导致Xcode中的堆栈溢出/“加载堆栈帧”错误。
我是否以完全错误的方式解决这个问题,即这只是一个非常糟糕的主意?我应该重新考虑用户界面吗?
UINavigationController *navigationController = [[UINavigationController alloc]
initWithRootViewController:addController];
[self presentModalViewController:navigationController animated:YES];
答案 0 :(得分:3)
固定。通过将第二个视图控制器推送到第一个视图控制器的UINavigationController,我得到了我想要的行为。
创建第一模态视图
FooAddController *addController = [FooAddController alloc]
initWithNibName:@"FooAddController" bundle:nil];
addController.delegate = self;
addController.foo = newFoo;
UINavigationController *navigationController = [[UINavigationController alloc]
initWithRootViewController:addController];
[self presentModalViewController:navigationController animated:YES];
[addController release];
创建第二个模态视图(在FooAddController中)
FooAddSizeViewController *addSizeController = [[FooAddSizeViewController alloc]
initWithNibName:@"FooAddSizeViewController" bundle:nil];
addSizeController.delegate = self;
addSizeController.foo = self.foo;
[self.navigationController pushViewController:addSizeController animated:YES];
[addSizeController release];
答案 1 :(得分:2)
当您处理多个级别的模态控制器时,需要注意调用presentModalViewController
的实例。
我们假设你有:
[myControllerA presentModalViewController:myControllerB animated:YES];
下次要在B具有焦点时显示模态控制器时,应调用
[myControllerB presentModalViewController:myControllerC animated:YES];
以便正确设置父控制器。 然后,控制器的层次结构是A-> B - > ç
答案 2 :(得分:0)
您是否尝试在presentModalViewController
的两个步骤中调用self.navigationController
?