在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! }
- 如何在用户input新行时将自动缩进添加到UITextView?
- NSKeyedArchiver为UIView的子视图返回nil
- 没有的UITableView仍然有效!
- 无法为XCode中的UILabel设置自定义字体
- UIViewAnimationOptionBeginFromCurrentState具有基本animation的意外行为
- iOS更改tabbar项目的颜色是安全的吗?
- UINavigationBar setBackgroundImage:forBarMetrics:不工作
- UIScrollView没有响应委托
- 从iOS服务器上的UDP服务器接收数据不能从Linux服务器上工作,但从MacBook Pro工作