I am getting viewControllers on navigationController stack as follows. Now I need to check if controller on top is one of known vc. How to get vc class name in order to compare
Use this It may Help's you
NSString *CurrentSelectedCViewController = NSStringFromClass([[((UINavigationController *)viewController1) visibleViewController] class]);
The most common technique is to use -isKindOfClass
:
if ([[viewContrells lastObject] isKindOfClass:MyViewController.class]]) {
// ...
}
Using NSStringFromClass
to compare strings is not a very nice solution because your code will break if you refactor the view controller to rename it.
if ([NSStringFromClass([[viewContrlls lastObject] class]) isEqualToString: @"Whatever"]){
}
You could also use -isKindOfClass
if you prefer to compare directly an instance to a specific class.
Swift version:
static func getClassNameAsString(className: AnyObject) -> String {
return _stdlib_getDemangledTypeName(className).componentsSeparatedByString(".").last!
}