将模态视图控制器添加到父子视图控制器层次结构

时间:2012-05-15 17:33:29

标签: iphone ios uiviewcontroller

我发布了一个相关的问题没有回复,但在这里我会不那么狭隘。基本上,我正在使用一段开源代码来实现一个facebook风格的幻灯片来显示类型视图。这种实现依赖于一种模式,其中初始滑动视图控制器是启动时应用程序窗口的根视图控制器。然后它允许每个视图控制器通过这种方便的方法获得对该滑动视图控制器的引用:

- (ECSlidingViewController *)slidingViewController
{
  UIViewController *viewController = self.parentViewController;
  while (!(viewController == nil || [viewController isKindOfClass:[ECSlidingViewController class]])) {
    viewController = viewController.parentViewController;
  }

  return (ECSlidingViewController *)viewController;
}

我认为这就是我的问题所在。我想为我提供模态的视图控制器提供这种滑动到侧面的样式菜单。但是模态呈现的视图控制器为其父视图控制器返回null。因此,当我尝试获取对该根视图控制器(初始滑动视图控制器)的引用时,我不能。如果我推动视图控制器,它可以正常工作,但这不是我想要的应用程序流程。我想如果我可以将这个模态视图控制器添加为呈现视图控制器的子项,它就可以工作。但是当我尝试这个时,我得到了一个异常,我正在以模态方式呈现一个已经处于活动状态的视图控制器。任何人都可以建议如何解决这个问题?

编辑:Here's我正在尝试做的事情的一个例子。

2 个答案:

答案 0 :(得分:0)

从我们的讨论中可以推断,它是一个基于视图的应用程序。因此,您必须根据要求在superview中添加和删除子视图,为此您将创建一个保持跟踪的类而且,不是以模态方式呈现视图,而是可以将其添加为子视图,如: -

[self.view addSubView:viewController.view];

您可以使用bringSubViewToFront将其置于顶部。查看此Link to manage it

答案 1 :(得分:0)

我最终使用这个工具来达到同样的效果,并且发现实现远远更简单。 http://cocoacontrols.com/controls/iiviewdeckcontroller