覆盖 UITabBarController 图标选择

Override UITabBarController Icon Selection

我使用的是底部带有图标的标准 UITabBarController,每个图标都有自己的ViewController。我的问题基本上是:

有没有办法覆盖选择图标时发生的情况,而不是直接将它们带到视图中?原因是因为我添加了一个登录屏幕,以便在选择图标时弹出,但是如果用户未登录,我宁愿让登录屏幕立即出现,而不是先加载视图,然后使用该视图 viewWillAppear 方法。

所以基本上不是立即加载预期的视图,而是如果他们没有登录则显示另一个视图 'modal-ly'。

UITabBarControllerDelegate 有一个委托方法
- tabBarController:shouldSelectViewController:, 只需执行它并检查用户是否已登录。

例如

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
  if (isLogin) {
    return YES;
  }
  else{
    //show your view controller here
    return NO;
  }
}

您还可以通过比较viewController参数来检查选择了哪个视图控制器。