• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - NSTimer 没有在它应该触发的时候触发

[复制链接]
菜鸟教程小白 发表于 2022-12-13 13:50:46 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个按字母顺序划分的表格 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++;
}

我打算使用那个计时器来索引我的图像数组,这样我就可以知道显示的是哪个。任何人都知道为什么它应该在它应该触发的时候不触发?感谢您的帮助!



Best Answer-推荐答案


您必须使用 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap