我的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
并在外部有一个标签,则可以解决此问题。这是我项目的正确设置吗?我对进行此更改犹豫不决,因为我预计会出现一组新错误来解决这个问题,包括尝试在运行时更改状态栏的颜色,并且无论如何都会读取它是一个糟糕的设置。
感谢您的时间,感谢任何帮助!