gpt4 book ai didi

ios - 需要指导来维护每个 Tableview 单元格的 NSTimer

转载 作者:行者123 更新时间:2023-11-28 19:01:04 25 4
gpt4 key购买 nike

如果我需要为每个单元格使用计时器,最好的方法是什么,

示例:- 每个以时间倒计时开始的单元格都以某个值(假设 50)开始,并且它会在每个时钟滴答声中减少直到零,当它的值为零时,我们需要删除该单元格动画片。每秒一次,我们应该更新每个 cel 计数器值作为每个单元格的计时器将会改变。我真的需要帮助来实现这个解决方法。您的建议可以使我的实现变得容易。

解决方法(我认为不错) 是在具有计时器属性 (NSTimer) 的 NSManageObject 中实现计时器,并使用 NSFetchedResultsController 来监听数据源更改以更新 tableview。但这是用这种方法维护带有部分的整个 TableView 的好方法吗?

在此先感谢您的帮助。

最佳答案

我会使用 NSNumbersNSMutableArray,其中每个 NSNumber 代表剩余的值。在 UITableView 中显示这些内容非常简单。

然后设置一个重复的 NSTimer 每秒“滴答”。在每个滴答声中遍历数组并递减值。如果值为 0,则从数组中删除该元素并从表中删除相应的行(假设 self.values 是单元格计数的 NSMutableArray)-

-(void) handleTick {

[self.tableView beginUpdates];
NSMutableArray *reloadRows=[NSMutableArray new];
for (int i=0;i<self.values.count;i++) {
NSNumber *number=self.values[i];
NSInteger val=[number integerValue]-1;

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0];
if (val > 0) {
values[i]=NSNumber numberWithInteger:val];
[reloadRows addObject:indexPath];
}
else {

[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
[self.values removeObjectAtIndex:i--];
}
}

if (reloadRows.count > 0) {
[self.tableView reloadRowsAtIndexPaths:reloadRows withRowAnimation:UITableViewRowAnimationNone];
}

[self.tableView endUpdates];

if (self.values.count == 0) {
[self.timer invalidate]; // Stop the timer if there is no data left
}
}

关于ios - 需要指导来维护每个 Tableview 单元格的 NSTimer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25638707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com