如何在按下主页按钮后重置 ViewController 并恢复到相同的 ViewController

How to reset a ViewController after pressing the homebutton and get back to the same ViewController

我正在开发一个正在播放动画的应用程序。如果用户按下 homebotton 并决定返回到应用程序 - 到 ViewController,动画发生的地方 - ViewController 应该显示为用户刚刚定期输入它(动画从开始)。我正在使用 CABasigAnimation。有人可以告诉我如何重置 ViewController 或类似的东西吗?

我在考虑ViewController的Lifecycle,但是没能找到类似于AndroidActivity的onRestart()方法的方法,其中如果用户再次输入 Activity .

,您可以输入一些代码

动画代码:

CAShapeLayer *progressCircle = [CAShapeLayer layer];
//....
[self.view.layer addSublayer:progressCircle];
CABasicAnimation *drawAnimation2 = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
//....
[progressCircle addAnimation:drawAnimation2 forKey:@"drawCircleAnimation"];

您正在寻找的方法在您的 AppDelegate class 中。所有 opening/closing 和系统通知都发生在 AppDelegate.m

您在AppDelegate.m中寻找的方法是:

-(void)applicationDidBecomeActive:(UIApplication *)application

为了在您想要的 viewController 上收到此通知,您必须将以下内容添加到控制器的 viewDidLoad 方法中:

 [[NSNotificationCenter defaultCenter]addObserver:self
                                     selector:@selector(resetAnimationMethod)
                                         name:UIApplicationDidBecomeActiveNotification
                                       object:nil];

然后您只需创建一个方法 -resetAnimationMethod 并在其中插入代码以恢复默认动画。

删除旧图层:

for (CALayer *oldLayers in self.view.layer.sublayers) {
    [oldLayers removeFromSuperlayer];
}

您可以尝试在 viewWillAppear() 上重置它 或类似的方法,这些方法在从一个 viewController 过渡到另一个 .

时被要求用于各个阶段

您可以取消用于填充 table 视图的数据源,然后在 table 视图本身上使用重新加载数据。正如您刚刚取消数据源并重新加载 table 视图一样,它现在将为空。例如,只需在视图生命周期 viewWillDisappear 上取消并重新加载。

然后,当您的用户返回到 table 视图时,您只需填充数据源,重新加载 table 视图并制作动画。