2009-12-29 120 views
0

我有一个带有TabBarController的iPhone应用程序。我可以访问当前ViewController与获取控制器的名称

[appDelegate.myTabBarController selectedViewController] 

但我怎么能得到这个控制器的名称?

例如,所选ViewController的名称是“TestViewController”。我怎样才能得到这个字符串/名称? 我想检查当前的ViewController是否是“TestViewController”。

非常感谢&最好的问候。

回答

2

可以以这种方式做到这一点:

if([[appDelegate.myTabBarController selectedViewController] isKindOfClass:[TestViewController class]]) 
{ 
NSLog(@"Yes I am the controller you want."); 
} 

希望这有助于。

0

可以使UIViewController类的子类,并添加属性,例如

@property(nonatomic, retain) NSString* name; 

然后让所有的类的子类viewControllers与name财产。那么只需在您的-(id)init-(void)viewDidLoad方法中设置控制器的名称,以便在需要时能够访问它。

另一种方法是制作一些类名对的字典。水木清华这样

[myDictionary setValue:stringClassName forKey:[MyViewController class]]; 

使可来自全国各地的应用程序本词典 - 你就可以在你想如果该类在你的词典中登记的任何时间每类取的名字。

1
if ([NSStringFromClass([[appDelegate.myTabBarController selectedViewController] class]) isEqualToString:@"TestViewController"]) 
{ 
    //do your stuff here 
} 
+0

您正在比较字符串,所以您应该使用' - [NSString isEqualToString:]'。但这是不必要的。只需使用' - [NSObject isKindOfClass:]'。 – 2009-12-30 01:57:30

+1

当然,你是对的,但我只是在这里给予有用的函数NSStringFromClass() – Francescu 2009-12-30 08:12:10

+0

同意Francescu。如果您不想#将类导入到您希望进行比较的类的.h中,那么比较类的字符串(Name)可能会很有用。我有一种情况需要确定哪些VC正在呈现。所以,我有一些代码告诉我TopMostVC是哪个。但为了执行isKindOfClass,我需要在范围内具有VC类。 – 2014-04-10 08:27:32

相关问题