如何在按下主页按钮后重置View Controller并返回到相同的ViewController

时间:2015-02-02 15:03:42

标签: ios objective-c uiviewcontroller

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

我正在考虑ViewController的生命周期,但是我找不到类似于Android Activity的onRestart()方法的方法,如果使用者进入活动,你可以放置一些代码再次

动画代码:

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

3 个答案:

答案 0 :(得分:5)

您正在寻找的方法是在您的AppDelegate类中。所有打开/关闭和系统通知都在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];
}

答案 1 :(得分:0)

您可以尝试在viewWillAppear()上重置它 或类似的这样的方法,在从一个viewController转换到另一个时,会调用各个阶段。

答案 2 :(得分:0)

您可以使用于填充表视图的数据源无效,然后在表视图本身上使用重新加载数据。当您刚刚取消数据源并重新加载表视图时,它现在将为空。只需在视图生命周期viewWillDisappear上取消并重新加载即可。

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