Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 获取iOS中的UIViewController类名_Iphone_Objective C_Ios_Cocoa Touch - Fatal编程技术网

Iphone 获取iOS中的UIViewController类名

Iphone 获取iOS中的UIViewController类名,iphone,objective-c,ios,cocoa-touch,Iphone,Objective C,Ios,Cocoa Touch,我在navigationController堆栈上获得ViewController,如下所示。现在我需要检查顶部的控制器是否是已知的vc之一。如何获得vc类名以便比较呢?多谢各位 NSArray *viewContrlls=[[self navController] viewControllers]; [viewContrlls lastObject] 大概 if ([[viewContrlls lastObject] name] isEqualToString @"viewControlle

我在navigationController堆栈上获得ViewController,如下所示。现在我需要检查顶部的控制器是否是已知的vc之一。如何获得vc类名以便比较呢?多谢各位

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

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

用这个也许对你有帮助

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

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

最常用的技术是使用
-isKindOfClass

if ([[viewContrells lastObject] isKindOfClass:MyViewController.class]]) {
    // ...
}
使用
NSStringFromClass
比较字符串不是一个很好的解决方案,因为如果重构视图控制器以重命名它,代码将中断。

Swift版本:

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

未解析标识符\u stdlib\u getDemangledTypeName。我想你还得告诉我们要导入哪个库。
static func getClassNameAsString(className: AnyObject) -> String {
    return _stdlib_getDemangledTypeName(className).componentsSeparatedByString(".").last!
}