在iphone上安装ApplicationIDBecomeActive时,如何从活动实例设置NSTimer的目标
我在appDelegate中创建了一个NSTimer,用于处理应用程序锁定或置于后台时的暂停,但计时器选择器位于另一个viewController中,当用户位于该viewController中,然后点击home按钮时,应用程序关闭并移到后台,但当点击应用程序时,我需要再次设置计时器,在ApplicationIDBECOMEACTIVE中,但不确定如何从应用程序委托访问活动的viewController,我已尝试在viewController的ViewDidDisplay中设置计时器,但未触发,如果有人知道如何处理此问题,我将不胜感激 创建一个变量以在应用程序委托中存储viewController在iphone上安装ApplicationIDBecomeActive时,如何从活动实例设置NSTimer的目标,iphone,ios,nstimer,Iphone,Ios,Nstimer,我在appDelegate中创建了一个NSTimer,用于处理应用程序锁定或置于后台时的暂停,但计时器选择器位于另一个viewController中,当用户位于该viewController中,然后点击home按钮时,应用程序关闭并移到后台,但当点击应用程序时,我需要再次设置计时器,在ApplicationIDBECOMEACTIVE中,但不确定如何从应用程序委托访问活动的viewController,我已尝试在viewController的ViewDidDisplay中设置计时器,但未触发,如
或者,如果您使用的是UINavigationController,您可以使用[navigationController topViewController]事实证明,这非常简单,我只是没有仔细考虑,可能有点太累了,反正答案与David提到的很接近,关键是循环导航控制器中的viewController,以获得正确的viewController
for (UIViewController *vc in [self.navigationController viewControllers]) {
if ([vc isKindOfClass:[CustomViewController class]]) {
CustomViewController *fvc = (CustomViewController *)vc;
self.sessionTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:fvc selector:@selector(saveTimesAndUpdateButtonDisplay) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:sessionTimer forMode:NSRunLoopCommonModes];
}
}
事实证明这很容易,我只是没有想清楚,可能有点太累了,不管怎样,答案与你提到的很接近,关键是在导航控制器中循环通过viewController以获得合适的viewController,感谢您的帮助--我有一个带代码的答案,但现在没有足够的分数发布,必须等待7小时: