【问题标题】:Timer decrement gets varied for each page load when using back button使用后退按钮时,每个页面加载的计时器减量都会有所不同
【发布时间】:2011-12-27 06:36:36
【问题描述】:

在我之前的问题中 Timer decrement gets varied for each page load 当我使用“Invalidate”和“Release”时,我的代码运行良好。但是当我使用后退按钮时,同样的问题会重复。我也需要一个停止选项..

-(IBAction)back:(id)sender
{

   [self dismissModalViewControllerAnimated:YES];
 }


 -(IBAction)stop:(id)sender
 {
[theTimer invalidate];
[theTimer release];
}

这是我在这里使用但效果不佳的代码。

【问题讨论】:

  • 谢谢大家,我让它工作了。谢谢你的回复

标签: iphone xcode nstimer


【解决方案1】:

尝试以这种方式使用它..

if ([theTimer isValid]) {
    [theTimer invalidate];
    theTimer=nil;
}

并确保您的方法已被调用。

【讨论】:

  • 使用了这个代码。但是当我点击停止按钮时,计时器没有任何反应。
  • 你的意思是你的定时器没有停止,好吧,然后在-(IBAction)back:(id)sender方法中使用这个代码..在-(IBAction)back:(id)sender行之前
  • 好吧,然后让我们详细介绍.. 发布更多代码,例如在哪里初始化 Timer.. 并确保没有对该方法的任何递归调用.. 再次尝试在其中找到 theTimer您的页面..通过搜索..确保没有任何未知调用此关键字..
  • 实际上在我的代码中 -(void)viewDidAppear:(BOOL)animated { count=15; theTimer= [NSTimer scheduleTimerWithTimeInterval:1 target:self 选择器:@selector(updateCounter:)userInfo:nil repeats:YES]; //[定时器失效];我没有写左边的部分(theTimer)那是我弄错了。
【解决方案2】:

每当我们使用计时器时,我们必须记住使计时器无效。当您按下后退按钮时,您的视图控制器已更改但您的计时器仍在继续工作,因此在按下后退按钮时您必须首先使计时器无效。当你分配定时器时首先检查定时器是否存在,如果定时器存在,你必须先使定时器失效。

if(timer)
{
   [timer invalidate];
    timer = nil;
}  

【讨论】:

  • no.. 计时器没有停止也没有失效。即使在回调按钮之后,它也会继续递减。
猜你喜欢
  • 2012-01-25
  • 2016-02-24
  • 1970-01-01
  • 1970-01-01
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
  • 2020-09-24
  • 1970-01-01
相关资源
最近更新 更多