美文网首页
iOS UITabBarController 的一些小技巧

iOS UITabBarController 的一些小技巧

作者: Fultom | 来源:发表于2018-10-17 17:49 被阅读0次

    1.组成

    TabBarControllerView,CustomContent,TabBar

    2.使用

    该控制器通常情况作为NavigationController的根视图来使用,可以自定义一个Controller继承TabBarController,并实现UITabBarControllerDelegate。
    在项目的使用过程由于想实现类似淘宝导航栏侧滑返回效果,在自定义的TabBarController中viewDidLoad采用了下面代码初始化每个tab的控制器。

        WscNavigationController *homeNavController = [[WscNavigationController alloc] initWithRootViewController:self.homeController];
        WscNavigationController *addressBookNavController = [[WscNavigationController alloc] initWithRootViewController:self.addressBookController];
        WscNavigationController *discoveryNavController = [[WscNavigationController alloc] initWithRootViewController:self.discoveryController];
        WscNavigationController *shoppingCartNavController = [[WscNavigationController alloc] initWithRootViewController:self.shoppingCartController];
    WscNavigationController *myNavController = [[WscNavigationController alloc] initWithRootViewController:self.myController];
    
    [self setViewControllers:@[homeNavController, addressBookNavController, discoveryNavController, shoppingCartNavController,myNavController]];
    

    这段代码看上去没有什么问题,但在使用过程中,如果要实现类似淘宝的侧滑返回效果,首先实现这个效果需要隐藏系统navbar,并add自定义的navbar,但是引发了诸多问题。例如:使用模式向上弹出控制器,dimss控制器后,系统导航栏自动出现,导致页面同时出现两个导航栏。又如:按Home键,在返回app时也出现了同样问题。之后有通过了各种方法将系统bar隐藏并将frame设置为Zero,并控制系统bar在各种情况下的显示隐藏,非常繁琐。
    在push其他页面的时候还用控制tabbar的显示和隐藏十分不便
    所以比较好的方法是在TabBarController中初始化控制器时不要在包一层NavigationController,直接将ViewController加入TabBarControler中,就可以避免这种情况的出现,少了不必要的麻烦。

    [self setViewControllers:@[self.homeController,self.addressBookController,self.discoveryController,self.shoppingCartController,self.myController]];
    
    注:self.homeController采用的是惰性初始化方法。

    相关文章

      网友评论

          本文标题:iOS UITabBarController 的一些小技巧

          本文链接:https://www.haomeiwen.com/subject/ohirzftx.html