在ios中检查屏幕上的当前视图控制器

时间:2012-10-16 12:27:32

标签: iphone ios ipad uiviewcontroller

我在自身对象上展示了一个包含UIViewController的UINavigationController,其代码如下

  drawController = [[DrawImageViewController alloc] initWithNibName:nil bundle:nil];
[drawController setDrawControllerDelegateObject:self];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:drawController];
[self presentModalViewController:nav animated:YES];
[nav release];

但是在第二次调用上面的代码之前,我想知道屏幕上出现的当前视图控制器是否是drawController。我正在使用以下代码

    if (drawController && [drawController isBeingPresented])

但它不适合我,也适用于iOS 5.0,所以我被困在这里。请帮助我知道我应该怎么知道屏幕上出现的当前UIViewController是哪个类以及drawContoller是否仍然出现在屏幕上?对不起我的错字错误,如果有的话。任何帮助将不胜感激。

感谢Neha Mehta

3 个答案:

答案 0 :(得分:22)

使用navigationController's visibleViewController propertyisKindOfClass method了解top上的内容:

if([self.navigationController.visibleViewController isKindOfClass:[yourcontroller class]])
   //exists
else
   //not exists

答案 1 :(得分:6)

不是最漂亮的代码,但这应该有效:

if ([self.presentedViewController isKindOfClass:[UINavigationController class]] &&
   ((UINavigationController *)self.presentedViewController).topViewController == drawController) {
   …

答案 2 :(得分:3)

检查UINavigationController visibleViewController方法。

有关文档,请参阅UINavigationController