2009-12-29 4 views
0

저는 TabBarController가있는 iPhone 응용 프로그램이 있습니다.컨트롤러 이름 얻기

[appDelegate.myTabBarController selectedViewController] 

으로 현재 ViewController에 액세스 할 수 있습니다. 어떻게이 컨트롤러의 이름을 얻을 수 있습니까?

예를 들어 선택된 ViewController의 이름은 "TestViewController"입니다. 이 문자열/이름을 어떻게 얻을 수 있습니까? 현재 ViewController가 "TestViewController"인지 확인하고 싶습니다.

미리 감사드립니다. & 최고 감사합니다.

답변

2

당신은이 방법으로이 작업을 수행 할 수 있습니다이 도움이

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

희망을.

0

당신의 UIViewController 클래스의 하위 클래스를 만들 수 name 속성 클래스의 당신의 viewControllers 서브 클래스의 모든을 다음

@property(nonatomic, retain) NSString* 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

Francescu와 동의하십시오. 비교할 클래스의 .h에 #import를하지 않으려는 경우 클래스의 문자열 (Name)을 비교하는 것이 유용 할 수 있습니다. 나는 어떤 VC가 제시되고 있는지 파악할 필요가있는 상황이있었습니다. 그래서 TopMostVC가 어떤 코드인지 알려주는 코드가 있습니다. 하지만 isKindOfClass를 수행하려면 범위에 VC 클래스가 있어야합니다. –