UINavigationController's
navigationBar最初将显示正确的UINavigationItem,但每次将UIViewController推入堆栈时,它将恢复到之前的 UINavigationIte
m .
重现步骤:
-
将
UIViewController
推到UINavigationControlle
r堆栈上 -
在导航控制器上设置navigationBarHidden = YES
-
将另一个视图控制器推入导航堆栈 .
-
开始交互式弹出过渡,然后取消它 .
-
弹回到上一个视图控制器
-
在导航控制器上设置
navigationBarHidden = NO
-
尝试将视图控制器推入堆栈
看起来 -[UINavigationBar _cancelInteractiveTransition]
正在被调用,即使在进入此状态后的推送转换中?我可以在该符号上设置断点,导航栏在它之前显示正确的导航项,之后显示错误的导航项 .
但我想要的是导航控制器的导航栏应该显示当前的topViewController的导航项 .
2 回答
我最近在iOS10上遇到了这个问题,我确信它在iOS9上,假设我们仍然支持它 . 事实证明,问题是在交互式转换开始时我们设置了navigationController.navigationBarHidden = NO,然后当它被取消时忘记将其设置回navigationController.navigationBarHidden = YES . 似乎导航栏不喜欢连续两次取消隐藏 . 我想像将它设置为连续两次隐藏也一样 . 好消息是这不是iOS11的问题 .