我有一个由UIScrollView
填充的UILabels
,NSTimers
正在每个页面上NSDictionary
进行更新,for (id key in _infoDict) {
NSTimer *releaseDateTimer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target: self
selector: @selector(calculateReleaseDate:) userInfo: dateInfo repeats: YES];
[self.releaseDateTimer fire];
}
-(void)calculateReleaseDate:(NSTimer*)theTimer {
NSString *monthString = [[NSString alloc]initWithFormat:@"%i",[finalDate month]];
NSString *dayString = [[NSString alloc]initWithFormat:@"%i",[finalDate day]];
NSString *hourString = [[NSString alloc]initWithFormat:@"%i",[finalDate hour]];
NSString *minutesString = [[NSString alloc]initWithFormat:@"%i",[finalDate minute]];
NSString *secondsString = [[NSString alloc]initWithFormat:@"%i",[finalDate second]];
UILabel *monthValue = (UILabel*)[self.scrollView viewWithTag:[monthTag intValue]];
[monthValue setText:monthString];
UILabel *dayValue = (UILabel*)[self.scrollView viewWithTag:[dayTag intValue]];
[dayValue setText:dayString];
UILabel *hourValue = (UILabel*)[self.scrollView viewWithTag:[hourTag intValue]];
[hourValue setText:hourString];
UILabel *minValue = (UILabel*)[self.scrollView viewWithTag:[minTag intValue]];
[minValue setText:minutesString];
UILabel *secValue = (UILabel*)[self.scrollView viewWithTag:[secTag intValue]];
[secValue setText:secondsString];
}
正在刷新的UILabel全部由其标签引用,这些标签基于它们所在的页面和哪个日历单元。
UIScrollView
这不是完整的方法,但你明白了。
现在,我希望通过删除所有[NSTimer invalidate];
子视图然后重新填充它来重建整个页面。
这就是我的问题所在,我的标签值在数字之间跳跃。 我只能假设我以前创建的计时器仍然存在仍然访问这些标签的实例。
有没有办法在runloop上访问定时器并在其上运行{{1}},或者我认为这一切都错了。
任何意见都会受到赞赏。
答案 0 :(得分:0)
您可以在for循环中的NSMutableArray中添加NSTimer实例。然后,如果它们在另一个for循环中仍然有效,则可以使它们无效。您可以使用isValid方法检查NSTimer是否仍然有效。