我对iOS开发相对陌生,并且我遇到了弹出视图控制器的问题。按下后退按钮时,我需要从导航堆栈中弹出两个(或多个)UIViewControllers
。由于我不希望它们都是动画的,所以我首先弹出所有的,除了最后一个未动画的,然后是最后一个动画的,但-viewWillDisappear
并不是只为最后一个调用的。这是我的代码(这些代码是从超级UIViewController
调用的,所有其他代码都是从它扩展而来的):
//popping all but last one - viewWillDisappear getting called for these
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:j] animated:NO];
//popping last one - viewWillDisappear not getting called for this one
[self.navigationController popViewControllerAnimated:YES];
//also tried this but with same result:
//[((UIViewController*)[self.navigationController.viewControllers objectAtIndex:j]).navigationController popViewControllerAnimated:YES];
有人知道我在这里做错了什么吗?或者你能告诉我如何正确地实现我的需求吗?
viewWillDisappear在加载新控制器时已被调用。我可以想象,在做这样的事情时,只有顶级控制器viewWillDissplay才会被调用。
为什么不直接弹出到所需的动画视图?
如果你把一个nslog放在视图中,它会出现,你可能会发现同样数量的视图会消失。
让我知道你发现了什么。希望能有所帮助。