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

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

NSInvalidArgumentException: Application tried to present modally an active controller .

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

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

CityViewController也可以打开短信composer php作为孩子。

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

 [self.navigationController visibleViewController]; 

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

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

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