Подтвердить что ты не робот

Получить имя класса UIViewController в iOS

Я получаю viewControllers в стеке navigationController следующим образом. Теперь мне нужно проверить, является ли контроллер сверху одним из известных vc. Как получить имя класса vc, чтобы сравнить его? Спасибо.

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

что-то вроде,

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

Ответ 1

Используйте это Это может помочь вам

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

Ответ 2

Наиболее распространенным методом является использование -isKindOfClass:

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

Использование NSStringFromClass для сравнения строк - не очень приятное решение, потому что ваш код сломается, если вы реорганизуете контроллер представления, чтобы переименовать его.

Ответ 3

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

Вы также можете использовать -isKindOfClass, если вы предпочитаете напрямую сравнивать экземпляр с определенным классом.

Ответ 4

Быстрая версия:

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