gpt4 book ai didi

iphone - 如何在更多部分获取 UITabBarItem 的标题?

转载 作者:太空狗 更新时间:2023-10-30 03:32:25 24 4
gpt4 key购买 nike

我有一个 UITabBarControllerDelegate 方法来确定 UITabBarItem 的标题并相应地做一些事情。这适用于我的 UITabBar 中的项目,但是当我单击“更多”按钮时,我的 UITabBarItems 的其余部分位于 UITableView 中。如何确定“更多”部分中的标题?

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{

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

最佳答案

每当您在 UITabBarController 中选择一个 View Controller 时,您提到的方法将被调用,最重要的是,当前显示的 View Controller 将作为参数传递给您;然后您可以使用以下代码找到 Controller 的类和标题,包括“更多” Controller :

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

在快速测试中,只需在 Xcode 中添加几个 Controller ,这就是您在控制台中得到的结果:

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

另一方面,当您在“更多”列表选择 Controller 时,您不会在 UITabBarControllerDelegate 方法中收到通知(奇怪,恕我直言)。为了帮助您在选择该列表中的 Controller 时收到通知,您可以执行以下操作:

- (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 协议(protocol)。

这是示例运行的结果,使用上面的代码并在 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)

希望这对您有所帮助!

关于iphone - 如何在更多部分获取 UITabBarItem 的标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2893776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com