标签栏替换视图控制器

比斯马

对于某些特定条件,我想从标签栏控制器替换视图控制器。这是我的代码。

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

   NSInteger selectIndex=[tabBarController.viewControllers indexOfObject:viewController];

 if (selectIndex==2) {

    UserObject * user=[[SharedClass sharedInstance] getUser];
    if (user.license_no.length>0 && user.insurance_no.length>0) {

        OfferRideVC *vc=[self.storyboard instantiateViewControllerWithIdentifier:@"OfferRideVC"];

        NSMutableArray *allviews=[[NSMutableArray alloc] initWithArray:[tabBarController viewControllers]];
        [allviews removeObjectAtIndex:selectIndex];
        [allviews insertObject:vc atIndex:selectIndex];
        [tabBarController setViewControllers:allviews];

      }


  }

  return YES;
}

但是我的应用因此错误而崩溃。'NSInvalidArgumentException',原因:'-[UITabBarController setSelectedViewController:]只能在选项卡栏控制器的视图控制器列表中选择一个视图控制器。

任何人都可以知道我的代码有什么问题吗?

食人魔

发生这种情况是因为您仍在函数末尾返回YES,因此TabBar尝试选择viewController,而该viewController现在不在其ViewControllers列表中。

如果是,则返回NO

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

   NSInteger selectIndex=[tabBarController.viewControllers indexOfObject:viewController];

 if (selectIndex==2) {

    UserObject * user=[[SharedClass sharedInstance] getUser];
    if (user.license_no.length>0 && user.insurance_no.length>0) {

        OfferRideVC *vc=[self.storyboard instantiateViewControllerWithIdentifier:@"OfferRideVC"];

        NSMutableArray *allviews=[[NSMutableArray alloc] initWithArray:[tabBarController viewControllers]];
        [allviews removeObjectAtIndex:selectIndex];
        [allviews insertObject:vc atIndex:selectIndex];
        [tabBarController setViewControllers:allviews];

        // ViewControllers changed, return NO
        return NO;
      }


  }

  return YES;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在标签栏控制器中隐藏当前视图控制器的标签

来自分类Dev

限制标签栏视图控制器中的旋转

来自分类Dev

从AppDelegate和标签栏推送视图控制器

来自分类Dev

更改标签栏的色彩颜色编辑视图控制器

来自分类Dev

标签栏,视图控制器和故事板

来自分类Dev

更改标签栏的色彩颜色编辑视图控制器

来自分类Dev

连接到标签栏视图控制器

来自分类Dev

从模态视图到标签栏视图控制器的筛选,而不会丢失标签栏

来自分类Dev

故事板-从模态视图控制器返回到标签栏控制器

来自分类Dev

从视图控制器中删除标签栏控制器

来自分类Dev

如何快速嵌入带有拆分视图控制器的标签栏控制器?

来自分类Dev

从标签栏控制器返回到视图控制器

来自分类Dev

以模态方式呈现嵌入在导航控制器中的视图控制器,与标签栏控制器分开

来自分类Dev

导航离开标签栏视图控制器时如何删除标签栏?

来自分类Dev

通过视图控制器,标签栏控制器,导航控制器和视图控制器传递数据

来自分类Dev

通过视图控制器,标签栏控制器,导航控制器和视图控制器传递数据

来自分类Dev

使用标签栏和导航栏设置初始视图控制器

来自分类Dev

带标签栏控制器的导航控制器?

来自分类Dev

带标签栏控制器的导航控制器?

来自分类Dev

使用标签栏和导航控制器将视图转移到错误的视图

来自分类Dev

将数据从表视图传递到 Swift 标签栏中的视图控制器

来自分类Dev

iOS标签栏控制器:我需要为未经授权的用户显示不同的视图控制器

来自分类Dev

使用自定义标签栏控制器类在两个视图控制器之间传递数据

来自分类Dev

在标签栏控制器内的所有继承的视图控制器中,BaseController委托无法正常工作

来自分类Dev

无法看到标签栏控制器

来自分类Dev

带标签栏控制器的UITableView

来自分类Dev

MWPhotoBrowser进入标签栏控制器

来自分类Dev

带标签栏控制器的UITableView

来自分类Dev

如何在标签栏控制器中添加额外的标签栏按钮而不在iOS中的该按钮上添加视图控制器

Related 相关文章

  1. 1

    在标签栏控制器中隐藏当前视图控制器的标签

  2. 2

    限制标签栏视图控制器中的旋转

  3. 3

    从AppDelegate和标签栏推送视图控制器

  4. 4

    更改标签栏的色彩颜色编辑视图控制器

  5. 5

    标签栏,视图控制器和故事板

  6. 6

    更改标签栏的色彩颜色编辑视图控制器

  7. 7

    连接到标签栏视图控制器

  8. 8

    从模态视图到标签栏视图控制器的筛选,而不会丢失标签栏

  9. 9

    故事板-从模态视图控制器返回到标签栏控制器

  10. 10

    从视图控制器中删除标签栏控制器

  11. 11

    如何快速嵌入带有拆分视图控制器的标签栏控制器?

  12. 12

    从标签栏控制器返回到视图控制器

  13. 13

    以模态方式呈现嵌入在导航控制器中的视图控制器,与标签栏控制器分开

  14. 14

    导航离开标签栏视图控制器时如何删除标签栏?

  15. 15

    通过视图控制器,标签栏控制器,导航控制器和视图控制器传递数据

  16. 16

    通过视图控制器,标签栏控制器,导航控制器和视图控制器传递数据

  17. 17

    使用标签栏和导航栏设置初始视图控制器

  18. 18

    带标签栏控制器的导航控制器?

  19. 19

    带标签栏控制器的导航控制器?

  20. 20

    使用标签栏和导航控制器将视图转移到错误的视图

  21. 21

    将数据从表视图传递到 Swift 标签栏中的视图控制器

  22. 22

    iOS标签栏控制器:我需要为未经授权的用户显示不同的视图控制器

  23. 23

    使用自定义标签栏控制器类在两个视图控制器之间传递数据

  24. 24

    在标签栏控制器内的所有继承的视图控制器中,BaseController委托无法正常工作

  25. 25

    无法看到标签栏控制器

  26. 26

    带标签栏控制器的UITableView

  27. 27

    MWPhotoBrowser进入标签栏控制器

  28. 28

    带标签栏控制器的UITableView

  29. 29

    如何在标签栏控制器中添加额外的标签栏按钮而不在iOS中的该按钮上添加视图控制器

热门标签

归档