如何在自定义导航中的viewwillappear和viewdidappear之间添加延迟?

时间:2015-07-06 07:32:24

标签: ios

当视图控制器推送到导航控制器时,viewwillappear和viewdidappear之间存在延迟。 Viewwillappear将立即调用,而viewdidappear将在转换动画结束后调用。

我想制作自定义导航。 Viewcontroller A是一个容器视图控制器。它将包含viewcontroller B或viewcontroller C.首先,viewcontroller包含viewcontroller B(A是B的父控制器)。然后,控制器B将通过转换导航到控制器C.

但是当viewwillappear调用addsubview时,viewdidappear将立即调用。如何在viewwillappear和viewdidappear之间添加延迟?我希望在动画之前调用viewwillappear,并在动画之后调用viewdidappear。你能救我吗?

2 个答案:

答案 0 :(得分:0)

有一种很好的方法可以手动延迟,尝试将其放在viewwillappear

的底部
double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
  NSLog(@"Do some work");
});

希望这可以提供帮助。

答案 1 :(得分:0)

这样怎么样?

  1. 只有一个容器 - 视图控制器A.
  2. B,C,D ......都是子视图,而不是视图控制器。
  3. 首先,视图控制器A默认具有视图B.
  4. 然后单击视图B中的按钮。
  5. 为C执行动画,然后在完成程序段中隐藏B或删除B.
  6. 希望这有用。