Ответ 1
Используйте это Это может помочь вам
NSString *CurrentSelectedCViewController = NSStringFromClass([[((UINavigationController *)viewController1) visibleViewController] class]);
Я получаю viewControllers в стеке 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
для сравнения строк - не очень приятное решение, потому что ваш код сломается, если вы реорганизуете контроллер представления, чтобы переименовать его.
if ([NSStringFromClass([[viewContrlls lastObject] class]) isEqualToString: @"Whatever"]){
}
Вы также можете использовать -isKindOfClass
, если вы предпочитаете напрямую сравнивать экземпляр с определенным классом.
Быстрая версия:
static func getClassNameAsString(className: AnyObject) -> String {
return _stdlib_getDemangledTypeName(className).componentsSeparatedByString(".").last!
}