2009-12-29 2 views
0

У меня есть приложение iPhone с TabBarController. Я могу получить доступ к текущему 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:]'. –

+1

Конечно, вы правы, но я просто даю полезную функцию NSStringFromClass() здесь – Francescu

+0

Согласен с Франческу. Может быть полезно сравнить строку (Имя) класса, если вы не хотите #import класса в .h класса, который вы хотите провести сравнение. У меня была ситуация, когда мне нужно было определить, какой VC был представлен. Итак, у меня был код, который рассказал мне, что такое TopMostVC. Но для выполнения isKindOfClass мне нужно будет иметь класс VC в области видимости. –

Смежные вопросы