Ios 如何在自定义导航中添加ViewWillDisplay和ViewDidDisplay之间的延迟?

Ios 如何在自定义导航中添加ViewWillDisplay和ViewDidDisplay之间的延迟?,ios,Ios,将视图控制器推送到导航控制器时,ViewWillDisplay和ViewDidDisplay之间存在延迟。ViewWillDisplay将立即调用,而ViewDidDisplay将在事务动画完成后调用 我想做一个自定义导航。Viewcontroller A是一个容器Viewcontroller。它将包含viewcontroller B或viewcontroller C。首先,viewcontroller包含viewcontroller B(A是B的父控制器)。然后控制器B将通过一个交易导航到控制

将视图控制器推送到导航控制器时,ViewWillDisplay和ViewDidDisplay之间存在延迟。ViewWillDisplay将立即调用,而ViewDidDisplay将在事务动画完成后调用

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


但调用addsubview时,ViewDidDisplay将在ViewWillDisplay之后立即调用。如何在ViewWillDisplay和ViewDidDisplay之间添加延迟?我希望在动画之前调用viewwillappear,在动画之后调用viewdidappear。您能帮助我吗?

有一种手动延迟的好方法,请尝试将其放在
视图的底部将出现

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");
});
希望这能有所帮助。

这样怎么样

  • 只有一个容器-视图控制器A
  • B、 C,D。。。是所有子视图,而不是视图控制器
  • 首先,视图控制器A默认具有视图B
  • 然后单击视图B中的按钮
  • 为C制作动画,然后在完成块中隐藏B或删除B

  • 希望这有帮助。

    在viewcontroller B的视图中有一个按钮。当点击按钮时,它将导航到控制器C。它看起来像pushviewcontroller。不同的是,viewcontroller B将被解除分配。我不想使用navigationcontroller和pushviewcontrller,因为有很多viewcontroller(viewcontroller D、viewcontroller E…),我不想在未显示时将它们留在内存中。