是否有可能刷新UITableViewCell内的一个视图

我有一个标准的表格视图。 在每个单元格内有一个UITableViewCell标签。 在任何时候,我需要不断更新整个tableView的一个标签(想象一下,时钟滴答作响)。

cellForRowAtIndexPath我可以识别哪个单元格需要更新,并将弱属性分配给此单元格内的标签。

然后,我打电话

label.text = @“新值”;

并期望该特定单元刷新该特定标签。 我检查了弱引用,它是有效的,文本正在改变,但是单元格没有被刷新。

我不想调用reloadRowsAtIndexPaths ,我只需要在单元格视图内刷新一个子视图。 可能吗?

更新:

这是我的代码:

这是视图控制器.m文件内的属性定义:

 @property (nonatomic, weak) UILabel* runningTimerLabel; 

我在cellForIndex调用中分配这个属性:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { MKSlidingTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"container"]; TimerCell *foregroundCell = [tableView dequeueReusableCellWithIdentifier:kTimerCellId]; UITableViewCell *backgroundCell = [tableView dequeueReusableCellWithIdentifier:@"background"]; BOOL runningCell = (indexPath.row == self.runningTimer); if (runningCell) { self.runningTimerLabel = foregroundCell.time; } cell.foregroundView = foregroundCell; cell.drawerView = backgroundCell; cell.drawerRevealAmount = 146; cell.forwardInvocationsToForegroundView = YES; cell.delegate = self; cell.tag = indexPath.row; return cell; } 

以下是更新标签的方法:

 - (void)refreshRunningTimerCell { self.runningTimerLabel.text = @"New text"; } 

这个方法从后台线程调用:

 - (void)refreshRunningTimer { while (1) { sleep(_sleepTime); [self performSelectorOnMainThread: @selector(refreshRunningTimerCell) withObject:nil waitUntilDone: YES]; } } 

我真的不明白你为什么试图获得对UIlabel的参考。

你有self.runningTimer所以你有一个索引行在你的tableView,所以只是得到

TimerCell * cell by cellForItemAtIndexPath并更新这个单元格。

我认为你可以做到这一点:

 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; UITableViewCell *cell = [self.tableView cellForItemAtIndexPath:indexPath]; [cell updateLabel:@"New string"];