我如何获得当前的活动视图控制器?

时间:2013-03-26 09:56:43

标签: ios objective-c

我遇到了这个问题(某些用户的Flurry分析报告错误,但我无法在我的设备和模拟器上重现它):

NSInvalidArgumentException: Application tried to present modally an active controller <CityViewController: 0x361b20>.

你对这个错误一无所知吗?它发生在你身上吗?

应用程序有三个分层排序视图:当用户位于其中一个已知位置时,将自动显示包含位置列表和详细视图的主视图控制器(错误消息中提到的CityViewController)。每当位置发生显着变化时,在打开新位置之前,首先会忽略详细视图以防止出现这种情况。但是,它显然没有帮助。

CityViewController也可以打开短信作曲家作为孩子。

3 个答案:

答案 0 :(得分:16)

要获取当前可见的视图,您可以使用:

[self.navigationController visibleViewController];

答案 1 :(得分:3)

所以对原始问题的回复:我如何获得当前的活动视图控制器?

答案在于[self.navigationController presentedViewController],而不是topViewController或其他任何内容。

答案 2 :(得分:0)

如果您在某个事件被触发时启动模态视图,则可能是您尝试在该视图已处于活动状态时再次显示该视图...