应用程序尝试以模态方式呈现活动控制器

时间:2011-11-10 03:46:58

标签: xcode uitableview presentmodalviewcontroller ios5

我已经搜索过并找到了关于此错误的各种q / a,但未能找到我的问题的任何具体帮助(至少我的最小经验让我理解)。

我正在从应用程序的主菜单加载UIView,而主菜单又有几个按钮选项(称之为子菜单)。其中一个回到主菜单没有问题([self dismissModalViewControllerAnimated:YES];)。另一个按钮加载UITableView(单独的视图控制器),加载很好。但是,我希望在这个UITableView中有一个按钮返回子菜单。当我使用上面提到的代码时,它会一直回到主菜单。我似乎无法找到一种方法来创建一个可以追溯到子菜单UIView(子菜单)的动作。

当我尝试执行标准['uitableviewcontrollername' presentModalViewController:submenuView animated:YES]; 时,我收到错误应用程序试图以模态方式呈现一个活动控制器(如果我用self替换uitableviewcontrollername,我会得到同样的错误。

错误是有道理的,因为我知道它已经处于活动状态,但我需要帮助的是,究竟是什么方法可以做到我上面所描述的?谢谢你的时间。

2 个答案:

答案 0 :(得分:2)

我认为解雇模态视图的正确方法是使用here中定义的委托。

在实践中,您可以在“菜单视图”中定义一个方法,该方法将通过调用常用方法来关闭活动模态视图:

- (void) notifytoclose {
    [self dismissModalViewControllerAnimated:YES];
}

您可以从菜单视图中调用它,但它会关闭它上面的活动模态。 然后在模态表视图控制器上定义委托属性,将其设置为菜单视图的实例,并在关闭您调用的表视图的方法中:

[delegate notifytoclose];

使用[self dismissModalViewControllerAnimated:YES]来关闭当前实例并不总是有效,尽管我不清楚这种情况。我还注意到iPAd和iPhone行为之间存在差异。

答案 1 :(得分:1)

根据我的具体需求,以下是从thetableview回来的诀窍:

[self.mapLegendViewController dismissModalViewControllerAnimated:YES];

格雷戈里的观点虽然很明显,但我建议阅读他所做的链接,因为iPhone / iPad如何处理这些行为很有意思。