【发布时间】:2020-05-28 21:05:53
【问题描述】:
我有一个以编程方式实现的tabBar。我希望能够跟踪用户是否按下某个 tabBar 项目(或按钮或任何它的名称)。据我了解,这是通过继承 UITabBarControllerDelegate 类来完成的。
如果我在 tabBar 项导航到的类之一中实现 UITabBarControllerDelegate 代码,则 didSelectViewController 方法有效:
@interface ExperiencesContainerViewController () <ContainerProtocol, UITabBarControllerDelegate>
@implementation ExperiencesContainerViewController
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
NSLog(@"PRESS");
}
- (void)viewDidLoad {
[super viewDidLoad];
self.tabBarController.delegate = self;
}
现在这个工作了,但它工作得有点太好了,因为它不仅会在我按下这个特定的 class 的项目时触发,而且我碰巧按下的任何项目都会触发,即使这些项目导航到一个完全不同的类。
我希望method 仅在我按下该特定类的tabBar 项时触发。然后我想我也会在另一个classes 中复制这种模式,并且只有在按下它们各自的tabBar 项目时才会触发这些方法。
我读到了:
Detect when a tab bar item is pressed
答案表明我应该在处理tabBar 设置的class 中实现UITabBarControllerDelegate。我试过了,但没有触发method。我认为这与 delegate 突然被设置为与 tabBar 项目之一无关的 class 有关。
如果您需要其他信息或需要查看更多代码,请告诉我。
【问题讨论】:
标签: ios objective-c uitabbarcontroller uitabbar uitabbaritem