菜鸟教程小白 发表于 2022-12-13 13:50:46

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


                                            <p><p>我有一个按字母顺序划分的表格 View 。我在每个部分的页脚的 UIImageView 中显示动画横幅,并且需要确定单击 UIImageView 时显示的图像。我在调用 startAnimating 之前设置了一个计时器。计时器每 5 秒触发一次,与动画变化的速率相同,但计时器的触发速度要快得多。有时它会在 5 秒内发射 2 或 3 次。这是我启动计时器和动画的代码:</p>

<pre><code>-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger) section {

...

    imgAdBar = [initWithFrame:CGRectMake(footer.frame.origin.x,footer.frame.origin.y,footer.frame.size.width,footer.frame.size.height)];

    imgAdBar.image=]];
    ;
    ;
    imgAdBar.animationImages = images;
    imgAdBar.animationDuration=*5;
    imgAdBar.animationRepeatCount=0;
    timerCount=0;
    ;
    ;
    ;
    footer.backgroundColor = ;

}
return footer;
}
</code></pre>

<p>这里是选择器:</p>

<pre><code>-(void)timerRunning:(NSTimer*)theTimer
{
NSLog(@&#34;timerCount=%d&#34;,timerCount);

imgAdBar.timerCount=timerCount;
if (timerCount==numAnimationImages) {
    timerCount=0;
}
NSLog(@&#34;currentImage=%@&#34;,);
timerCount++;
}
</code></pre>

<p>我打算使用那个计时器来索引我的图像数组,这样我就可以知道显示的是哪个。任何人都知道为什么它应该在它应该触发的时候不触发?感谢您的帮助!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您必须使用 NSTimer 作为属性...
由于 <code>viewForFooterInSection</code> 在许多部分中被多次调用,因此您必须在重新初始化之前使其无效,或者您必须检查以下代码是否为空。
<strong>无效:</strong></p>

<pre><code>    NSTimer *timer; // declare in ViewDidLoad
// code in viewForFooterInSection
    ;
      timer = [NSTimer scheduledTimerWithTimeInterval: 0.5
                         target: self
                         selector: @selector(handleTimer:)
                         userInfo: nil
                         repeats: YES];
</code></pre>

<p><strong>检查为零</strong></p>

<pre><code>if (timer == nil) {

      timer = [NSTimer scheduledTimerWithTimeInterval: 0.5
                                                 target: self
                                             selector: @selector(handleTimer:)
                                             userInfo: nil
                                                repeats: YES];
    }
</code></pre>

<p>希望对您有所帮助..</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - NSTimer 没有在它应该触发的时候触发,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/10700317/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/10700317/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - NSTimer 没有在它应该触发的时候触发