2010-05-23 24 views
8

UITabBarItem'un başlığını belirleyen bir UITabBarControllerDelegate yöntemim var ve buna göre bir şeyler yapıyor. Bu benim UITabBar benim öğeleri için iyi çalışır, ancak More butonuna tıkladığımda UITabBarItems geri kalanım UITableView'dur. Daha fazla bölümdeki başlığı nasıl belirleyebilirim?Diğer bölümdeki UITabBarItem başlığı nasıl alınır?

Eğer UITabBarController bir görünüm denetleyicisi seçtiğinizde
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 
{ 

    if ([self.tabBarController.selectedViewController.title isEqualToString:@"All"]) { 
     //do something 
    } 
} 

cevap

10

, bahsettiğiniz yöntemi denir ve en önemlisi olacak şu anda parametre olarak size geçirilecek gösterilmiştir görünümü kontrolörü; Eğer "Diğer" denetleyicisi de dahil olmak üzere denetleyici sınıfını ve başlığını bulmak için aşağıdaki kodu kullanabilirsiniz: sadece Xcode kontrolörleri birkaç ekleyerek, hızlı bir testte

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

, bu nedir konsolda olsun: diğer taraftan

2011-03-28 09:13:21.795 TabTest[39015:207] controller class: UIViewController 
2011-03-28 09:13:21.797 TabTest[39015:207] controller title: (null) 
2011-03-28 09:13:23.922 TabTest[39015:207] controller class: UITableViewController 
2011-03-28 09:13:23.925 TabTest[39015:207] controller title: (null) 
2011-03-28 09:13:24.505 TabTest[39015:207] controller class: UITableViewController 
2011-03-28 09:13:24.506 TabTest[39015:207] controller title: (null) 
2011-03-28 09:13:24.945 TabTest[39015:207] controller class: UIMoreNavigationController 
2011-03-28 09:13:24.945 TabTest[39015:207] controller title: More 

, siz "daha" listesi kontrolör içine seçtiğinizde, size UITabBarControllerDelegate yöntemi (garip, IMHO) içinde bildirim yapılmayacaktır. Bu listede denetleyicileri seçtiğinizde bildirimler almak yardımcı olmak için, aşağıdaki yapabileceğini:

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

    if (viewController == tabBarController.moreNavigationController) 
    { 
     tabBarController.moreNavigationController.delegate = self; 
    } 
} 

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    if (navigationController == self.tabBarController.moreNavigationController) 
    { 
     NSLog(@"more controller class: %@", NSStringFromClass([viewController class])); 
     NSLog(@"more controller title: %@", viewController.title); 
    } 
} 

Sınıfınız da elbette UINavigationControllerDelegate protokolünü uygulamalıdır.

Bu, yukarıdaki kodu kullanarak ve UITabBar ve "daha" listesinde birkaç kez dokunarak, bir numune çalışması sonucudur: Bu yardımcı olur

2011-03-28 09:27:42.496 TabTest[39113:207] controller class: UIViewController 
2011-03-28 09:27:42.498 TabTest[39113:207] controller title: (null) 
2011-03-28 09:27:44.306 TabTest[39113:207] controller class: UIMoreNavigationController 
2011-03-28 09:27:44.307 TabTest[39113:207] controller title: More 
2011-03-28 09:27:44.310 TabTest[39113:207] more controller class: UIMoreListController 
2011-03-28 09:27:44.311 TabTest[39113:207] more controller title: More 
2011-03-28 09:27:45.632 TabTest[39113:207] more controller class: SecondViewController 
2011-03-28 09:27:45.634 TabTest[39113:207] more controller title: (null) 
2011-03-28 09:27:47.156 TabTest[39113:207] more controller class: UIMoreListController 
2011-03-28 09:27:47.156 TabTest[39113:207] more controller title: More 
2011-03-28 09:27:48.581 TabTest[39113:207] controller class: UITableViewController 
2011-03-28 09:27:48.582 TabTest[39113:207] controller title: (null) 

Umut!

İlgili konular