【发布时间】:2014-09-21 03:57:55
【问题描述】:
这就是我使用容器 API 的方式。根据docs 是正确的。
[self.childViewController willMoveToParentViewController:nil];
[UIView animateWithDuration:0.25 animations:^{
self.childViewController.view.frame = ... // View Animation
} completion:^(BOOL finished) {
[self.childViewController.view removeFromSuperview]; // triggers `viewWillDisappear`
[self.childViewController removeFromParentViewController];
}];
我希望在动画开始之前调用viewWillDisappear,并在动画完成后调用viewDidDisappear。但是,它们都是在动画完成后快速连续调用的。
将[self.childViewController.view removeFromSuperview]; 移动到动画块可以解决此问题,但代码看起来错误:
[self.childViewController willMoveToParentViewController:nil];
[UIView animateWithDuration:0.25 animations:^{
self.childViewController.view.frame = ... // View Animation
[self.childViewController.view removeFromSuperview]; // triggers `viewWillDisappear`
} completion:^(BOOL finished) {
[self.childViewController removeFromParentViewController];
}];
有谁知道在正确的时间调用viewWillDisappear 的正确方法是什么?
【问题讨论】:
-
“正确”时间是在视图从视图层次结构中删除之前,也就是它发生的时间。也许您应该解释为什么需要在调用时调用它,以及您要实现的目标。
标签: ios objective-c cocoa-touch uiviewcontroller