Я использовал NSTimer & в конце countDown хочу изменить значение [email protected]"Time Up"
. Это работает отлично, пока я не переключусь на какой-нибудь другой ViewController, после переключения между viewController (&, возвращающимся к этому viewController), когда countDown завершен. Я получаю идеальные значения. & их нет, но значение View.UILabel.text не меняется, I проверили исключения, исключение не было поднято.View.UILabel.text не меняется после переключения между viewControllers
Мой код:
-(void) timeInterval
{
appdelegate._UserProfile.totalTime = 30;
UIApplication *app = [UIApplication sharedApplication];
//will allow NSTimer to continue running in background..
UIBackgroundTaskIdentifier bgTask = 0;
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
}];
appdelegate._UserProfile.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(countDown) userInfo:nil repeats:YES];
}
-(void) countDown
{
appdelegate._UserProfile.totalTime -= 1;
if(appdelegate._UserProfile.totalTime == 0)
{
[profileView.userPhoneNo setText:@""];
profileView.timeUp.text= @"* Time Up";
}
}
Пожалуйста, любая помощь будет очень признателен. (Я видел много вопросов, но моя проблема не была решена)
* Примечание: после переключения, если я изменяю значение метки в ViewWillAppear(), он работает идеально, но мне нужно изменить текст, когда countDown завершен. Я использую UINavigationController & MFSideMenuManager
для переключения между ViewControllers.
Мои навигации Код:
-(void) initMyProfile
{
UINavigationController *detailNavigationController = [MFSideMenuManager sharedManager].navigationController;
detailNavigationController.menuState = MFSideMenuStateHidden;
MyProfileViewController_iPhone* detailViewController = [[MyProfileViewController_iPhone alloc] initWithNibName:nil bundle:nil];
detailViewController.title = @"My Profile";
detailNavigationController.viewControllers = [NSArray arrayWithObject:detailViewController];
}
Я не использую Segue, вместо этого делаю все программно –
Можете ли вы поместить контрольную точку в свой блок кода «Время» и посмотреть, вообще ли он вызван? Если это произойдет, но вы не увидите отображаемый результат, я думаю, может быть, у вас есть несколько экземпляров. Попробуйте точку останова в инициализаторе View Controller и посмотрите, выполняется ли она несколько раз. – Clafou
Да, я проверил его, поставив точки останова. Блок «Время в пути» называется –