Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iphone上安装ApplicationIDBecomeActive时,如何从活动实例设置NSTimer的目标_Iphone_Ios_Nstimer - Fatal编程技术网

在iphone上安装ApplicationIDBecomeActive时,如何从活动实例设置NSTimer的目标

在iphone上安装ApplicationIDBecomeActive时,如何从活动实例设置NSTimer的目标,iphone,ios,nstimer,Iphone,Ios,Nstimer,我在appDelegate中创建了一个NSTimer,用于处理应用程序锁定或置于后台时的暂停,但计时器选择器位于另一个viewController中,当用户位于该viewController中,然后点击home按钮时,应用程序关闭并移到后台,但当点击应用程序时,我需要再次设置计时器,在ApplicationIDBECOMEACTIVE中,但不确定如何从应用程序委托访问活动的viewController,我已尝试在viewController的ViewDidDisplay中设置计时器,但未触发,如

我在appDelegate中创建了一个NSTimer,用于处理应用程序锁定或置于后台时的暂停,但计时器选择器位于另一个viewController中,当用户位于该viewController中,然后点击home按钮时,应用程序关闭并移到后台,但当点击应用程序时,我需要再次设置计时器,在ApplicationIDBECOMEACTIVE中,但不确定如何从应用程序委托访问活动的viewController,我已尝试在viewController的ViewDidDisplay中设置计时器,但未触发,如果有人知道如何处理此问题,我将不胜感激

创建一个变量以在应用程序委托中存储viewController


或者,如果您使用的是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小时: