Ios 对于UITableviewCell,NSTimer无法正常工作

Ios 对于UITableviewCell,NSTimer无法正常工作,ios,uitableview,nstimer,reload,countdown,Ios,Uitableview,Nstimer,Reload,Countdown,我必须创建一些类似的东西,有一个UITableView,它有很多多行和多个部分,每行都有不同的计时器,以'hh:mm:ss'格式显示,它每秒递减,就像倒计时一样 我遇到的问题是,当我滚动UITableView时,很少有UILabel被重新初始化,倒数计时时间过去了,甚至它也会跳过几个单元格。 我使用以下代码来实现我的要求: -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPa

我必须创建一些类似的东西,有一个UITableView,它有很多多行和多个部分,每行都有不同的计时器,以'hh:mm:ss'格式显示,它每秒递减,就像倒计时一样

我遇到的问题是,当我滚动UITableView时,很少有UILabel被重新初始化,倒数计时时间过去了,甚至它也会跳过几个单元格。 我使用以下代码来实现我的要求:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

       //Somewhere, in this method
       elapsedTimeTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(runningTimer:) userInfo:dic repeats:YES];

       [[NSRunLoop currentRunLoop] addTimer:elapsedTimeTimer
                                         forMode:NSRunLoopCommonModes];
}

-(void)runningTimer:(NSTimer *)timer {
       secondsLeft --; //I'm able to get seconds 

       hours = secondsLeft / 3600;
       minutes = (secondsLeft % 3600) / 60;
       seconds = (secondsLeft %3600) % 60;

       cell.lblTime.text = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds];
}
请帮我解决这个问题。任何形式的帮助,都将不胜感激


谢谢

不能在CellForRowatinex内创建计时器对象。当数据源计数时,它将创建太多的timers对象。只需在viewDidLoad中创建一次计时器,VIEW就会出现,甚至在设置数据源之后。我认为你的问题是你安排了不止一个计时器,所有的都被解雇了


祝您好运

您不能在CellForRowatinex中创建计时器对象。当数据源计数时,它将创建太多的timers对象。只需在viewDidLoad中创建一次计时器,VIEW就会出现,甚至在设置数据源之后。我认为你的问题是你安排了不止一个计时器,所有的都被解雇了


祝您好运

您不能在CellForRowatinex中创建计时器对象。当数据源计数时,它将创建太多的timers对象。只需在viewDidLoad中创建一次计时器,VIEW就会出现,甚至在设置数据源之后。我认为你的问题是你安排了不止一个计时器,所有的都被解雇了


祝您好运

您不能在CellForRowatinex中创建计时器对象。当数据源计数时,它将创建太多的timers对象。只需在viewDidLoad中创建一次计时器,VIEW就会出现,甚至在设置数据源之后。我认为你的问题是你安排了不止一个计时器,所有的都被解雇了


祝你好运

你需要一个元素数组或字典来跟踪你的计时器

uitableview中的每个单元格都被重用,因为您的计时器将受到影响

而不是
elapsedtimer
我会用

elapsedTimeTimers[indexPath.row]
其中
elapsedtimers
是计时器数组


当然,这适用于只有一个部分的情况。如果你有更多,那么你将不得不计算正确的指数。此外,如果您有一个对象来保存所有这些数据,您可以使用对象id或类似的东西。

您需要一个元素数组或字典来跟踪计时器

uitableview中的每个单元格都被重用,因为您的计时器将受到影响

而不是
elapsedtimer
我会用

elapsedTimeTimers[indexPath.row]
其中
elapsedtimers
是计时器数组


当然,这适用于只有一个部分的情况。如果你有更多,那么你将不得不计算正确的指数。此外,如果您有一个对象来保存所有这些数据,您可以使用对象id或类似的东西。

您需要一个元素数组或字典来跟踪计时器

uitableview中的每个单元格都被重用,因为您的计时器将受到影响

而不是
elapsedtimer
我会用

elapsedTimeTimers[indexPath.row]
其中
elapsedtimers
是计时器数组


当然,这适用于只有一个部分的情况。如果你有更多,那么你将不得不计算正确的指数。此外,如果您有一个对象来保存所有这些数据,您可以使用对象id或类似的东西。

您需要一个元素数组或字典来跟踪计时器

uitableview中的每个单元格都被重用,因为您的计时器将受到影响

而不是
elapsedtimer
我会用

elapsedTimeTimers[indexPath.row]
其中
elapsedtimers
是计时器数组


当然,这适用于只有一个部分的情况。如果你有更多,那么你将不得不计算正确的指数。另外,如果您有一个对象来保存所有这些数据,您可以使用对象id或类似的东西。

如果您不创建数组,而是创建一个NSDictionary[NSIndexPath]=NSTimer,那么您不必担心单个或多个节*NSMutableDictionary,是的,正如我在第一句中所说的,您可以用这种或那种方式来做,根据你的需要。对于检查对象是否已经存在,NSMutableDictionary将是更好的选择。感谢您的评论。如果您不创建数组,而是创建一个NSDictionary[NSIndexPath]=NSTimer,那么您不必担心单个或多个节*NSMutableDictionary是的,正如我在第一句中所说的,您可以根据您的需要以这种或那种方式进行操作。对于检查对象是否已经存在,NSMutableDictionary将是更好的选择。感谢您的评论。如果您不创建数组,而是创建一个NSDictionary[NSIndexPath]=NSTimer,那么您不必担心单个或多个节*NSMutableDictionary是的,正如我在第一句中所说的,您可以根据您的需要以这种或那种方式进行操作。对于检查对象是否已经存在,NSMutableDictionary将是更好的选择。感谢您的评论。如果您不创建数组,而是创建一个NSDictionary[NSIndexPath]=NSTimer,那么您不必担心单个或多个节*NSMutableDictionary是的,正如我在第一句中所说的,您可以根据您的需要以这种或那种方式进行操作。对于检查对象是否已经存在,NSMutableDictionary将是更好的选择。感谢您的评论。创建独立于视图的数据模型。创建独立于视图的数据模型。创建独立于视图的数据模型。创建独立于视图的数据模型。我已创建一个计时器对象,并根据我的数据操作条件每秒重新加载表。让我来看看它在不同的分页和其他条件下是如何工作的。谢谢你的建议。!!。。我使用了一个计时器对象,并根据我的数据操作条件每秒重新加载一次表。让我来看看它在不同的分页和其他条件下是如何工作的。T