簡體   English   中英

如何在更多部分獲得UITabBarItem的標題?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM