我有一个按字母顺序划分的表格 View 。我在每个部分的页脚的 UIImage View 中显示动画横幅,并且需要确定单击 UIImage View 时显示的图像。我在调用 startAnimating 之前设置了一个计时器。计时器每 5 秒触发一次,与动画变化的速率相同,但计时器的触发速度要快得多。有时它会在 5 秒内发射 2 或 3 次。这是我启动计时器和动画的代码:
-(UIView *)tableViewUITableView *)tableView viewForFooterInSectionNSInteger) section {
...
imgAdBar = [[bannerView alloc]initWithFrame:CGRectMake(footer.frame.origin.x,footer.frame.origin.y,footer.frame.size.width,footer.frame.size.height)];
imgAdBar.image=[UIImage imageNamed:[NSString stringWithFormat"%@", [animationArray objectAtIndex:0]]];
[imgAdBar saveBannerArray:animationArray];
[imgAdBar setUserInteractionEnabled:YES];
imgAdBar.animationImages = images;
imgAdBar.animationDuration=[images count]*5;
imgAdBar.animationRepeatCount=0;
timerCount=0;
[NSTimer scheduledTimerWithTimeInterval:5.0 target:self selectorselector(timerRunning userInfo:nil repeats:YES];
[imgAdBar startAnimating];
[footer addSubview:imgAdBar];
footer.backgroundColor = [UIColor clearColor];
}
return footer;
}
这里是选择器:
-(void)timerRunningNSTimer*)theTimer
{
NSLog(@"timerCount=%d",timerCount);
imgAdBar.timerCount=timerCount;
if (timerCount==numAnimationImages) {
timerCount=0;
}
NSLog(@"currentImage=%@",[animationArray objectAtIndex:timerCount]);
timerCount++;
}
我打算使用那个计时器来索引我的图像数组,这样我就可以知道显示的是哪个。任何人都知道为什么它应该在它应该触发的时候不触发?感谢您的帮助!
您必须使用 NSTimer 作为属性...
由于 viewForFooterInSection
在许多部分中被多次调用,因此您必须在重新初始化之前使其无效,或者您必须检查以下代码是否为空。
无效:
NSTimer *timer; // declare in ViewDidLoad
// code in viewForFooterInSection
[timer invalidate];
timer = [NSTimer scheduledTimerWithTimeInterval: 0.5
target: self
selector: @selector(handleTimer
userInfo: nil
repeats: YES];
检查为零
if (timer == nil) {
timer = [NSTimer scheduledTimerWithTimeInterval: 0.5
target: self
selector: @selector(handleTimer
userInfo: nil
repeats: YES];
}
希望对您有所帮助..
关于ios - NSTimer 没有在它应该触发的时候触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10700317/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://ogeek.cn/) | Powered by Discuz! X3.4 |