在iOS中获取UIViewController类的名称

我得到viewControllers on navigationController堆栈如下。 现在我需要检查顶部的控制器是否是已知的vc之一。 如何获得VC类名称,以便比较它? 谢谢。

NSArray *viewContrlls=[[self navController] viewControllers]; [viewContrlls lastObject] 

就像是,

 if ([[viewContrlls lastObject] name] isEqualToString @"viewControllerName"){ 

使用这可能会帮助你

  NSString *CurrentSelectedCViewController = NSStringFromClass([[((UINavigationController *)viewController1) visibleViewController] class]); 

最常见的技术是使用-isKindOfClass

 if ([[viewContrells lastObject] isKindOfClass:MyViewController.class]]) { // ... } 

使用NSStringFromClass来比较string不是一个很好的解决scheme,因为如果您重构视图控制器来重命名它,代码将会中断。

 if ([NSStringFromClass([[viewContrlls lastObject] class]) isEqualToString: @"Whatever"]){ } 

如果您希望直接将实例与特定的类进行比较,也可以使用-isKindOfClass

Swift版本:

 static func getClassNameAsString(className: AnyObject) -> String { return _stdlib_getDemangledTypeName(className).componentsSeparatedByString(".").last! }