如何获取iPhone上切换选项卡菜单的事件

31

我正在尝试找出如何捕获控制UITabBarController标签切换事件的方法。我该如何实现?

5个回答

37

在你的应用程序委托的applicationDidFinishLaunching中实现UITabBarControllerDelegate

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
    tabBarController.delegate = self;
    [window addSubview:tabBarController.view];
}

然后实现以下任一方法:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController;

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

第一种方法是在视图切换之前调用的,它给了你一个机会通过返回NO来阻止视图切换。

第二种方法是在视图切换发生后调用的。


15

如果您正在使用故事板,请执行以下操作:

在didFinishLaunchingWithOptions方法中

UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController;
[tabBar setDelegate:self];

同样在AppDelegate中,保留<UITabBarControllerDelegate>

然后

-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
   //Write your code here
}

6
比不做好过。在Swift 4中,您可以按照以下方式进行操作。
tabBarViewController.delegate = self

在你的类中实现UITabBarDelegate。 你将在其中获得回调。

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
  //Stuff to do
}

5
请看UITabBarControllerDelegate中的以下方法:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

告诉委托对象,用户在标签栏中选择了一个项目。

1

你是在寻找 UITabBarControllerDelegate 吗?特别是其中的 tabBarController:didSelectViewController: 方法?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接