繁体   English   中英

单击UITabBarController的选项卡栏,调用不同的viewControllers

[英]Call different viewControllers on click of tab bar of UITabBarController

提示:本站提供中英文对照查看,鼠标放在中文字句上可显示英文原文。 若本文未解决您的问题,推荐您尝试使用帮您解决。

下面是情节UITabBarController中我的UITabBarController结构的图像。

在此处输入图片说明

现在在情节AboutUsViewController(UIViewController)中, AboutUsViewController(UIViewController)与我的tabBar按钮单击事件绑定在一起,即,如果我单击tabBar按钮,则AboutUsViewController正在打开,但是现在我的功能基于某些条件。 我想在同一tabBar按钮单击上调用ContactRequstViewController而不是AboutUsViewController

以下是我打开ContactRequstViewController代码。

-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
      if (tabBarController.selectedIndex == 2){
           UIStoryboard *story =  [UIStoryboard storyboardWithName:@"iPhone" bundle:nil];
           ContactRequstViewController *contactVC = [story instantiateViewControllerWithIdentifier:@"ContactUsView"];
          [self.navigationController pushViewController:contactVC animated:YES];
      }
}

编写ContactRequestViewController以上代码后,我无法加载ContactRequestViewController

如果要基于自定义逻辑替换所选选项卡上的根视图控制器,请尝试使用UITabBarController setViewControllers:animated:方法。

您可以执行以下操作:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    if (tabBarController.selectedIndex == 1 && tabBarController.viewControllers.count > tabBarController.selectedIndex) {
        BOOL shouldShowContactVC = (BOOL)(rand() % 2);
        NSMutableArray *viewControllers = [[tabBarController viewControllers] mutableCopy];
        UIStoryboard *main = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        UIViewController *newVC = nil;
        if (shouldShowContactVC) {
            newVC = [main instantiateViewControllerWithIdentifier:@"ContactUsVC"];
        } else {
            newVC = [main instantiateViewControllerWithIdentifier:@"AboutUsVC"];
        }
        if (newVC) {
            [viewControllers replaceObjectAtIndex:tabBarController.selectedIndex withObject:newVC];
            newVC.tabBarItem = viewController.tabBarItem;
            [tabBarController setViewControllers:viewControllers animated:YES];
        }
    }
}

以我的经验,有时我们不使用tabbarVC,因为它不灵活,例如hideshowchange items number 因此,我们将NavigationVC设置为rootVC,您可以创建一个View,只需使其看起来像tabbarVC。 此视图更易于使用。您无需关心任何委托方法或其他任何方法。 你可以做任何你想做的事。 就这样。

问题未解决?试试使用:帮您解决问题。
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM