iPhone模态视图里面的另一个模态视图?

时间:2010-01-21 09:38:53

标签: iphone user-interface

当用户添加新的foo时,我的应用程序使用模态视图。用户使用此模态视图选择foo类型。根据选择的类型,需要向用户询问更多信息。

我想使用另一个模态视图来询问这些额外信息。我试图像第一个一样创建新的模态视图(效果很好),并导致Xcode中的堆栈溢出/“加载堆栈帧”错误。

我是否以完全错误的方式解决这个问题,即这只是一个非常糟糕的主意?我应该重新考虑用户界面吗?

UINavigationController *navigationController = [[UINavigationController alloc]   
    initWithRootViewController:addController];
[self presentModalViewController:navigationController animated:YES];

3 个答案:

答案 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