UINavigationController's
navigationBar最初将显示正确的UINavigationItem,但每次将UIViewController推入堆栈时,它将恢复到之前的UINavigationIte
m。
重现步骤:
UIViewController
推送到UINavigationControlle
堆栈navigationBarHidden = NO
在进入此状态后,即使在推送转换时,看起来-[UINavigationBar _cancelInteractiveTransition]
被调用了吗?我可以在该符号上设置断点,导航栏在它之前显示正确的导航项,然后显示错误的导航项。
但我想要的是导航控制器的导航栏应显示当前topViewController的导航项。
答案 0 :(得分:0)
@interface UINavigationController (Private)
- (void)_cancelInteractiveTransition:(float)arg1 transitionContext:(id)arg2;
@end
- (void)_cancelInteractiveTransition:(float)arg1 transitionContext:(id)arg2
{
BOOL hidden = self.isNavigationBarHidden;
if (hidden) {
[self setNavigationBarHidden:NO animated:YES];
}
[super _cancelInteractiveTransition:arg1 transitionContext:arg2];
if (hidden) {
[self setNavigationBarHidden:hidden animated:YES];
}
}
答案 1 :(得分:0)
我最近在iOS10上遇到了这个问题,并且假设我们仍然支持它,那么我可以肯定它在iOS9上存在。原来的问题是,在交互式过渡开始时,我们设置了navigationController.navigationBarHidden = NO,然后在取消设置时忘记将其重新设置为navigationController.navigationBarHidden = YES。似乎导航栏不希望连续两次被隐藏。我可以想象,将其设置为连续两次隐藏也是如此。好消息是这不是iOS11的问题。