2009-12-29 160 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

相關問題