如何获得在iphone上切换标签菜单的事件

Yan*_*Yan 26 iphone uitabbarcontroller iphone-sdk-3.0

我正在试图弄清楚如何捕获控制开关标签的事件 UITabBarController.我怎么能做到这一点?

cid*_*red 35

UITabBarControllerDelegate例如,在您的应用程序委托中实现applicationDidFinishLaunching

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

然后执行:

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

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController;
Run Code Online (Sandbox Code Playgroud)

第一种方法在视图切换之前调用,让您有机会通过返回"否决"视图切换 NO

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


nit*_*ddy 13

如果您使用的是故事板,请执行此操作

在didFinishLaunchingWithOptions中

UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController;
[tabBar setDelegate:self];
Run Code Online (Sandbox Code Playgroud)

同样在AppDelegate中,保持 <UITabBarControllerDelegate>

然后

-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
   //Write your code here
}
Run Code Online (Sandbox Code Playgroud)


ved*_*rke 6

迟到总比不到好。如果是 swift 4,您可以按照以下方式进行操作。

tabBarViewController.delegate = self
Run Code Online (Sandbox Code Playgroud)

UITabBarDelegate在课堂上实施。您将收到回调

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
  //Stuff to do
}
Run Code Online (Sandbox Code Playgroud)


Vla*_*mir 5

看看UITabBarControllerDelegate中的以下方法:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
Run Code Online (Sandbox Code Playgroud)

告诉代表该用户用户在选项卡栏中选择了一个项目。