2012-04-08 4 views
1

탭이있는 iOS 애플리케이션이 있습니다. 탭이 변경 될 때 어떤 탭이 활성 상태인지 감지해야합니다. 스토리 보드에는 탭보기 컨트롤러가 있는데, 탭을 잘 클릭하면보기가 바뀝니다. 나는 수업 TabBarController을 생성하고 다음과 같이 정의된다 :iOS 탭 변경 여부 감지

헤더

@interface TabBarController : UITabBarController <UITabBarControllerDelegate> 

@end 

구현

#import "TabBarController.h" 

@implementation TabBarController 

// In the initialization section, set the delegate 
- (id) init 
{ 
    self = [super init]; 
    if (self) 
    { 
     self.delegate = self; 
    } 
    return self; 
} 

- (void)tabBarController:(UITabBarController *)tabBarController 
didSelectViewController:(UIViewController *)viewController 
{ 
    NSLog(@"controller class: %@", NSStringFromClass([viewController class])); 
    NSLog(@"controller title: %@", viewController.title); 
} 

@end 

그러나, 나는 위의 코드와 탭의 변화를 감지 할 수 없었다. 문제가 뭐라고 생각하니?

내 탭보기를 모든 콘센트에 연결하지 않았지만 다른보기로 연결합니다. 이게 문제 야? 그런 다음 콘센트를 어디에 연결해야합니까?

답변

-3

솔루션 구현의 viewDidLoad입니다 :

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
    NSLog(@"Tabs showed up!"); 
    self.delegate = self; 
} 
+0

O_o에서 허용하는 이유는 무엇입니까? – Alfabravo

3

init 메서드가 호출되고 있는지 확인 했습니까? 나는 UITabBarController에 대한 init이 지정된 초기화 코드라고 생각하지 않으며, nib/storyboard에서 컨트롤러를로드 할 때 호출되지 않을 수도 있습니다.

그런 경우가 있다면 당신은 쉽게에서 위임을 설정하는 경우 귀하의 viewDidLoad 그 개체가 초기화되거나 다른 -initWithNibName:bundle: 또는 -initWithCoder 개체를 인스턴스화하는 데 사용되는 경우에는 대리자를 설정 확인 방법에 관계없이 호출 될 것이기 때문에 . 다음과 같이에

+0

감사 @Jonah. 나는 self.delegate = self를 넣음으로써 문제를 해결했다; viewDidLoad에. – mert