【问题标题】:iPhone modal view inside another modal view?iPhone 模态视图在另一个模态视图中?
【发布时间】:2010-04-27 20:51:27
【问题描述】:

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

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

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

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

【问题讨论】:

  • 一般来说呈现多个modalViewControllers没有问题。您能否发布用于两个不同演示文稿的完整代码?另外:来自屏幕底部的两个重叠的模态 VC 可能会让用户感到困惑。也许您应该在导航控制器的新级别中显示附加信息。

标签: iphone user-interface


【解决方案1】:

已修复。通过将第二个视图控制器推送到第一个视图控制器的 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];

【讨论】:

    【解决方案2】:

    当您处理多个级别的模态控制器时,您需要注意调用presentModalViewController 的实例。 假设你有:

    [myController<b>A</b> presentModalViewController:myController<b>B</b> animated:YES];

    下次你想在 B 获得焦点时显示模态控制器,你应该调用

    [myController<b>B</b> presentModalViewController:myController<b>C</b> animated:YES];

    为了正确设置父控制器。 控制器的层次结构是 A-> B -> C

    【讨论】:

    • 我遇到了一个问题,如果我将 myControllerC 作为 myControllerA 的第二个孩子,它不会显示,但如果它是 myControllerB 的孩子,它可以正常工作。谢谢!
    【解决方案3】:

    您是否尝试在这两个步骤中都在self.navigationController上调用presentModalViewController

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多