我有一個表視圖被分解成字母節。我在每個部分的頁腳中的UIImage View中顯示動畫橫幅,並且需要確定在單擊UIImage View時顯示哪個圖像。我在打電話給startAnimating之前設置了一個計時器。定時器每5秒鐘發射一次,速度與動畫改變的速度相同,但定時器發射速度更快。有時它會在5秒內發射2次或3次。這裏就是我啓動定時器和動畫代碼:NSTimer不應該發射時它應該
-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger) 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 selector:@selector(timerRunning:) userInfo:nil repeats:YES];
[imgAdBar startAnimating];
[footer addSubview:imgAdBar];
footer.backgroundColor = [UIColor clearColor];
}
return footer;
}
,這裏是選擇:
-(void)timerRunning:(NSTimer*)theTimer
{
NSLog(@"timerCount=%d",timerCount);
imgAdBar.timerCount=timerCount;
if (timerCount==numAnimationImages) {
timerCount=0;
}
NSLog(@"currentImage=%@",[animationArray objectAtIndex:timerCount]);
timerCount++;
}
我打算使用定時器來索引到我的圖像陣列,這樣我可以告訴顯示。任何人都有任何想法,爲什麼它應該不會開火?感謝您的幫助!
在'viewForFooterInSection:'中添加'NSLog'來查看你是否多次調度定時器。如果您希望它與動畫同步觸發,那麼爲什麼不使用動畫結束事件,而是使用委託中的'animationDidStop:'實現? – dasblinkenlight
感謝您的回覆!不幸的是,我現在不在我的Mac前面,但會在下班後嘗試。但是,我認爲你可能會做些什麼。由於我在viewForFooterInSection過程中調用了NSTimer,因此我一次可以在屏幕上顯示多個頁腳。所以,我想我會不知何故必須爲每個部分指定不同的定時器,並且每個部分都有不同的選擇器?或者,我需要將該部分傳遞給選擇器並增加單獨的計數器?對不起,我對ios非常陌生......只要顯示所有圖像,就會調用animationDidStop? – user1292943
它可能觸發了幾次,因爲每個頁腳都會調用viewForFooterInSection方法,並且每次在頁面上顯示頁腳 – Novarg