我在哪里实现UITabBarControllerDelegate?

时间:2020-02-13 08:03:28

标签: ios objective-c uitabbarcontroller uitabbar uitabbaritem

我有一个tabBar以编程方式实现。我希望能够跟踪用户是否按下了某个tabBar项目(或按钮或所称的名称)。据我了解,这是通过继承UITabBarControllerDelegate类来完成的。

如果我在UITabBarControllerDelegate项导航到的其中一个类中实现tabBar代码,则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

答案表明我应该在处理UITabBarControllerDelegate的{​​{1}}中实现class。我尝试过,但是没有触发tabBar。我认为这与method突然被设置为与delegate项之一不相关的class有关。

让我知道您是否需要其他信息,或者是否需要查看更多代码。

1 个答案:

答案 0 :(得分:0)

我相信您已经发布的链接对您来说answers是正确的。

您需要创建用于处理 app.documents[0].spreads.item(myCounter).move(LocationOptions.AFTER, app.documents[0].spreads.item(myCounter + 1)); 工具tabBar的设置和显示的类,不是 UITabBarDelegate。然后,您可以使用正确的委托方法来检索单击tabBar的一项,然后检查它是否是您感兴趣的项。

您想要的方法是UITabBarControllerDelegate (当用户选择标签栏项目时发送给委托人。)

更多信息here

相关问题