判断 UIViewController 子类的实例是不是存在

Posted

技术标签:

【中文标题】判断 UIViewController 子类的实例是不是存在【英文标题】:Determine if instance of UIViewController subclass exists判断 UIViewController 子类的实例是否存在 【发布时间】:2012-02-28 23:42:57 【问题描述】:

如何检查继承 UIViewController 的所有活动对象的列表?

我想知道MyViewController 的实例是否存在。理想情况下,我可以在 UIApplicationDelegate 的回调中获取此信息(例如 application:didReceiveRemoteNotification:)。

我尝试过记录 navigationController.viewControllers 之类的内容,但没有运气。我还尝试了 navigationController 上的 topViewControllermodalViewController 属性。

【问题讨论】:

这是出于调试目的还是您有其他想法? “存在”是指存在并且有有效的参考吗?还是你的意思是别的? @Jim 用于调试。是的,我的意思是有一个有效的参考。 【参考方案1】:

如果你知道你的 rootViewController 是 UINavigationController,你可以遍历视图控制器数组并测试它的类类型

BOOL success = NO;
NSArray *viewControllersArray = self.navigationController.viewControllers;
for (id vc in viewControllersArray)

    if ([vc isKindOfClass:[MyViewController class]])
        success = YES; // Found it!

【讨论】:

以上是关于判断 UIViewController 子类的实例是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

未显示子类 UIViewController

将 UITableViewController 子类重构为 UIViewController 子类

确定 UITabBar 项属于哪个 UIViewController 子类

向下转换/子类 UIViewController 用于单元测试中的模拟

UIViewController 的 Swift 子类化子类

为啥 UIViewController 是 UIResponder 的子类?