我用popToRootViewController
方法发现了一些奇怪的行为。
根据它的声明,它应该返回弹出的viewControllers,但如果你在pushViewController
class HomeTabNavigationController: UINavigationController {
override func popToRootViewController(animated: Bool) -> [UIViewController]? {
let viewControllers = super.popToRootViewController(animated: animated)
if let vcs = viewControllers, vcs.count > 0 {
print("POPPED SOMETHING")
}
return viewControllers
}
}
如果动画在我调用之前完成,这是按预期工作的。 但是如果我在动画过程中仍然调用此方法,它将返回nil,但在稍微延迟后它仍然会弹出到根视图控制器。
我准备了一个问题的快速演示:
https://github.com/grzegorzkrukowski/UINavigationControllerBug
当然我的真实应用程序中有不同的用例,但问题是一样的。 我错过了什么,或者它只是一个错误?