![](/img/trans.png)
[英]iPhone - Changing UITabBarItem title after is customized in More section
[英]How to get title of UITabBarItem in the More section?
我有一個UITabBarControllerDelegate
方法決定的標題UITabBarItem
因此而做一些事情。 這適用於我的UITabBar
項目,但是當我單擊“更多”按鈕時,其余的UITabBarItems
都在UITableView
。 如何在“更多”部分中確定標題?
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
if ([self.tabBarController.selectedViewController.title isEqualToString:@"All"]) {
//do something
}
}
無論何時在UITabBarController中選擇視圖控制器,都會調用您提到的方法,最重要的是, 當前顯示的視圖控制器將作為參數傳遞給您 ; 然后,您可以使用以下代碼查找控制器的類和標題,包括“更多”控制器:
- (void)tabBarController:(UITabBarController *)tabBarController
didSelectViewController:(UIViewController *)viewController
{
NSLog(@"controller class: %@", NSStringFromClass([viewController class]));
NSLog(@"controller title: %@", viewController.title);
}
在快速測試中,只需在Xcode中添加幾個控制器,這就是您在控制台中獲得的:
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
在另一邊,當您選擇“更多”列表內部控制器,你會不會在你的UITabBarControllerDelegate方法(怪異的,恕我直言)通知。 為了幫助您在該列表中選擇控制器時收到通知,您可以執行以下操作:
- (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);
}
}
當然,您的類還應該實現UINavigationControllerDelegate協議。
這是樣本運行的結果,使用上面的代碼並在UITabBar和“更多”列表中點擊幾次:
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)
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.