gpt4 book ai didi

iphone - UITabBar(Controller) - 获取点击的索引?

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

我有一个标签栏应用程序,我需要知道用户何时以及点击标签栏上的哪个按钮以显示适当的通知等。

简而言之:我将如何检测 UITabBar 上点击的 UITabBarItem 的索引?

提前致谢!

最佳答案

答案取决于 UITabBar 是否由 UITabBarController 管理。

案例 1 - UITabBar 已由 UITabBarController 处理

实现 UITabBarControllerDelegate 协议(protocol)。特别是 tabBarContoller:didSelectViewController: 方法。将实现该协议(protocol)的类实例设置为 UITabBarControllerdelegate

- (void)tabBarController:(UITabBarController *)theTabBarController didSelectViewController:(UIViewController *)viewController {
NSUInteger indexOfTab = [theTabBarController.viewControllers indexOfObject:viewController];
NSLog(@"Tab index = %u (%u)", (int)indexOfTab);
}

在这种情况下,您必须注意在选项卡 Controller 中有足够多的 Controller 导致显示“更多”选项卡的特殊情况。在这种情况下,您将收到对 tabBarController:didSelectViewController: 的调用,其中的 View Controller 不在列表中(它是内部 UIKit 类 UIMoreNavigationController 的实例)。在这种情况下,我示例中的 indexOfTab 将是 NSNotFound

情况 2 - UITabBar 尚未由 UITabBarController 处理

实现 UITabBarDelegate 协议(protocol)。特别是 tabBar:didSelectItem: 方法。将实现该协议(protocol)的类实例设置为 UITabBardelegate

- (void)tabBar:(UITabBar *)theTabBar didSelectItem:(UITabBarItem *)item {
NSUInteger indexOfTab = [[theTabBar items] indexOfObject:item];
NSLog(@"Tab index = %u", (int)indexOfTab);
}

编辑:修改了方法参数变量以消除 OP 关于 tabBarController 被隐藏的编译警告。

关于iphone - UITabBar(Controller) - 获取点击的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3766230/

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