2014-09-06 2 views
0

네 개의 탭이있는 TabBarController와 NavigationController가 있습니다. 다른 탭을 선택하면 TopBar에 다른 제목을 표시하려고합니다. 한 가지 방법은 각 TabBarItem보기를 탐색 컨트롤러에 포함시키는 것이었지만 어떤 이유로이 방법이 올바르지 않은 것으로 보입니다. 코드를 통해이를 적용하고 싶었습니다.모든 뷰 reload (TabBarItem)에서 어떤 NavigationController 메서드가 실행되는지

이 코드를 사용하여이를 관리 : (Products_ViewController.m의 사용자 정의 클래스)

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
    UINavigationController *navCon = (UINavigationController*) [self.navigationController.viewControllers objectAtIndex:0]; 
    navCon.navigationItem.title = @"Products"; 
} 

을 그러나 문제는 지금 탭이 처음을 클릭하면, 그것은 제목을 변경하지만 그렇지 않은 . 그런 다음 동일한 코드를 -(void)viewDidAppear{}에 적용했지만 여전히 동일한 결과가 나타납니다.

탭 표시 줄 항목을 클릭하거나보기가 표시 될 때마다 위의 코드를 실행하여 탐색 위쪽 막대 제목을 표시하려면 어떻게해야합니까?

감사합니다.

답변

0

Products_ViewController.m 클래스에 UITabBarControllerDelegate을 구현하고 tabBarController:didSelectViewController: 메서드에서 코드를 실행할 수 있습니다. viewDidLoad 방법에서

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 
     UINavigationController *navCon = (UINavigationController*) [self.navigationController.viewControllers objectAtIndex:0]; 
     navCon.navigationItem.title = @"Products"; 
    } 

당신은 delegate self에 설정해야합니다.

+0

감사합니다. Products_ViewController.m 사용자 정의 클래스에 추가합니까, 아니면 UITabBarItem 또는 UITabBarController에 대한 사용자 정의 클래스를 만들어야합니까? – user3550458

+0

죄송합니다. 깜빡 했으니 코드를 Products_ViewController.m 클래스에 작성해야합니다. – smudis

+0

좋아요, 코드를 추가했지만 실제로 Products_ViewController.m에서 UITabBarControllerDelegate를 구현하는 방법을 이해하지 못합니다. 좀 더 설명해 주시겠습니까? Thx – user3550458