在我的应用程序中,有时pushViewController无故失败,发生的事情非常奇怪。 navigationBar和navigationItem发生了变化,但未推送ViewController
。然后我可以点击屏幕上的任何内容。我发现调用viewWillAppear
但未调用viewDidAppear
。我按下iPhone的主页按钮进入后台。再次输入前景后,会推送ViewController
并调用viewDidAppear
。我不知道为什么以及何时发生。
答案 0 :(得分:0)
你推入视图层次结构的viewcontroller是否意外地覆盖了viewWillAppear / viewDidAppear而没有调用[super viewWillAppear / viewDidAppear:animated]?
答案 1 :(得分:0)
您可能在viewWillAppear方法中意外调用[super viewDidLoad]
答案 2 :(得分:0)
如果你能责备:
当当前viewController是导航控制器中的第一个VC时,禁用 interactivePopGestureRecognizer 。
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
}
答案 3 :(得分:0)
对于遇到与我相同问题的任何人:检查所有自定义视图,看看您是否没有layoutSubviews
的无限循环。这是在viewWillAppear
和viewDidAppear
之间发生的事情。
答案 4 :(得分:0)
在我的实现中,我有一个自定义Tab栏控制器,并且出于某些原因viewDid Appear为空,让超级调用解决了它。
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated) //was missing this line
}
答案 5 :(得分:-1)
你知道,如果你覆盖navigationController.interactivePopGestureRecognizer.delegate并且没有适当地恢复它,那么这个bug也会出现