在viewControllers之间切换后,View.UILabel.text不会更改

时间:2014-12-03 11:39:33

标签: ios objective-c

我使用过NSTimer&在countDown结束时想要更改View.UILabel.text=@"Time Up"的值。这是完美的工作,直到我切换到一些其他ViewController,在viewDtroller之间切换(&回到这个viewController)当countDown完成后我得到完美的值&它们不是nil但是View.UILabel.text值没有变化,我检查了异常,没有异常被引发。

我的代码:

-(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];

}

2 个答案:

答案 0 :(得分:1)

一种可能的解释是,您不会回到原始视图控制器,而是回到新的实例。使用标准segue而不是展开segue时很容易发生这种情况。

查看发生类似问题的其他问题:Changing label text inside method

答案 1 :(得分:1)

如果您通过单击后退导航按钮返回视图,并在viewDidLoad上调用此方法,那就是问题。

只有在创建视图控制器后才会调用viewDidLoad,每次查看控制器打开时调用这些方法,在viewWillAppear上调用这些方法。