繁体   English   中英

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

Call different viewControllers on click of tab bar of UITabBarController

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

下面是情节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

2 个回复

如果要基于自定义逻辑替换所选选项卡上的根视图控制器,请尝试使用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。 此视图更易于使用。您无需关心任何委托方法或其他任何方法。 你可以做任何你想做的事。 就这样。

4 从uitabbarcontroller中的选项卡栏项显示uiactionsheet

在我的一个应用程序中,我想显示来自选项卡控制器中选项卡栏项目的操作表,如果单击该选项卡栏项目,则该操作表应该可以在任何地方访问。 恐怕可以做到这一点,因为标签栏与其视图控制器紧密相连。 如果有人可以解决,那将非常有帮助。 ...

7 操作栏,如果单击某个选项卡,如何隐藏操作栏(单击该选项卡的全屏)

我正在阅读关于Android中的操作栏(如何有标签)。 我的问题是,假设每个标签点击都有其片段,我如何使最后一个标签(比如第3个标签)占据整个屏幕? 我的意思是如果有人点击tab3小部件,而不是仅仅显示操作栏下的内容,我希望这个片段成为全屏(在操作栏屏幕上展开)。 请帮帮我谢谢 ...

8 UIAccelerometer,ViewControllers和TabViewController,在选项卡和MotionBegan之间切换不会被调用

所以我有一个基于TabBarController的应用程序,并且使用UIAccelerometer在我的一个选项卡Im中。 我看到的问题是,我可以正常使用并使用加速度计,直到切换选项卡然后再切换回去。 假设我的加速度计在tab1上,然后单击tab2,然后回到tab1,则加速度计已关闭。 ...

9 单击选项卡时调用宏

我使用以下XML代码为Excel加载项创建自定义功能区。 当使用属性onAction按下选项卡按钮时,我可以轻松调用宏。 但是我不能对选项卡执行相同操作,在选项卡标记中添加属性onAction不起作用。 所以我问,单击我的标签时是否可以调用宏? ...

10 UITabBarController不显示所有选项卡

我一直在与UITabBarController一个奇怪的问题。 这里是: 我创建了一个新的单一视图应用程序 我将Tab Bar Controller拖放到了具有两个初始视图控制器的情节提要上。 我为这两个视图控制器创建了两个类。 我将另一个视图控制器拖到情节提 ...

暂无
暂无

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

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