UITabBarController

时间:2017-07-17 00:02:04

标签: swift xcode uinavigationcontroller uitabbarcontroller

我的VC堆栈转为UITabBarController - > UINavigationControllers - > UIViewControllers for this tab。我正在使用UITabBarControllerDelegate的函数:

func tabBarController(_ tabBarController: UITabBarController, animationControllerForTransitionFrom fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
    guard fromVC.childViewControllers.first is FirstTabViewController,
        toVC.childViewControllers.first is SecondTabViewController else { return nil }
    return self
}

然后我使用FirstTabViewController扩展UIViewControllerAnimatedTransitioning并定义其两个委托函数。对于原始过渡,这应该有效。

FirstTabViewController有一个明确的UINavigationBar,因为我在导航栏中创建的自定义搜索栏太难了,尽管它与UINavigationBar的{​​{1}}不同SecondTabViewController这不会对手头的问题产生任何影响。 SecondTabViewController有一个带有白色背景的常规UINavigationBar。

所以问题是,每当我将tabBarController.delegate分配给FirstTabViewController动画过渡时,UINavigationBar的{​​{1}}都不可见。此时SecondTabViewController的{​​{1}}等于nil,即使该选项卡的根视图是导航控制器,它肯定是故事板的初始视图控制器。我会继续挖掘,但有没有办法让我这样做而不隐藏导航栏?

以下是具有相同问题的示例项目的链接。任何正确方向的帮助都会很棒。

https://github.com/Sethmr/InvisibleNavBarTest

如果我从各个标签中删除UINavigationController并在外部有一个标签,则可以解决此问题。这是我项目的正确设置吗?我对进行此更改犹豫不决,因为我预计会出现一组新错误来解决这个问题,包括尝试在运行时更改状态栏的颜色,并且无论如何都会读取它是一个糟糕的设置。

感谢您的时间,感谢任何帮助!

0 个答案:

没有答案