2011-06-03 33 views
0

当applicationDidBecomeActive我有一个NSTimer,我在appDelegate中创建处理应用程序锁定或放在后台时,但时间选择器在另一个viewController ,当用户在该视图控制器,然后点击主页按钮应用程序关闭并移动到后台,但是当该应用程序被轻敲,我需要再次设置计时器,在applicationDidBecomeActive,但我不知道如何访问活动viewController从应用程序委托,我已经尝试在viewController的viewDidAppear中设置计时器,但它不被解雇,如果任何人有一些线索如何处理这一点,我将非常感激。如何设置NSTimer从活动实例的目标iphone

回答

0

那么事实证明,这是很容易的,我只是没有想到事情的经过,也许有点太累了,反正答案是紧挨什么大卫提到的,关键是要遍历导航控制器的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

创建一个变量来存储的viewController在应用程序的委托......

或者,如果你正在使用一个UINavigationController你可以使用[navigationController topViewController]

+0

那么它变成出于这个很简单,我只是没有考虑它,也许有点太累了,无论如何,答案接近你提到的,关键是要通过导航控制器中的viewControllers来获取正确的viewController,谢谢你你的帮助 - - 我有一个代码的答案,但没有足够的要点现在发布,必须等待7个小时:( – creativeKoder 2011-06-04 00:01:57