Как установить цель NSTimer из активного экземпляра, когда applicationDidBecomeActive на iphone - PullRequest
0 голосов
/ 04 июня 2011

У меня есть NSTimer, который я создал в appDelegate для обработки паузы, когда приложение блокируется или помещается в фоновом режиме, но селектор таймеров находится в другом viewController, когда пользователь находится в этом viewController, а затем нажимает кнопку homeприложение закрывается и перемещается в фоновый режим, но когда оно касается приложения, мне нужно снова установить таймер в applicationDidBecomeActive, но я не уверен, как получить доступ к активному viewController из делегата приложения, я попытался установить таймер вviewDontAppear viewController, но он не запускается, если у кого-то есть какие-то подсказки о том, как справиться с этим, я был бы очень признателен.

Ответы [ 2 ]

0 голосов
/ 04 июня 2011

Что ж, получается, что это довольно просто, я просто не думал об этом, может быть, слишком устал, в любом случае, ответ близок к тому, что упомянул Дэвид, ключ в том, чтобы просмотреть циклы viewControllers в контроллере навигации. чтобы получить правильный 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]; 
    }
  }
0 голосов
/ 04 июня 2011

Создать переменную для хранения viewController в делегате приложения ...

Или, если вы используете UINavigationController, вы можете использовать [navigationController topViewController]

...