Ios 是否可以在UITableViewCell中刷新一个视图

Ios 是否可以在UITableViewCell中刷新一个视图,ios,objective-c,cocoa-touch,uitableview,Ios,Objective C,Cocoa Touch,Uitableview,我有一个标准的表视图。在每个单元格内,我都有一个标签。在任何给定的时间,我都需要为整个tableView不断更新一个标签(例如,想象时钟滴答作响) 在cellforrowatinexpath中,我识别出需要更新的单元格,并为该单元格内的标签指定弱属性 后来,我打电话 label.text=@“新值” 并期望该特定单元格刷新该特定标签。我检查了弱引用,它是有效的,文本正在更改,但是单元格没有刷新 我不想调用reloadRowsAtIndexPaths,我只需要刷新单元格视图中的一个子视图。可能吗

我有一个标准的表视图。在每个单元格内,我都有一个标签。在任何给定的时间,我都需要为整个tableView不断更新一个标签(例如,想象时钟滴答作响)

cellforrowatinexpath
中,我识别出需要更新的单元格,并为该单元格内的标签指定弱属性

后来,我打电话

label.text=@“新值”

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

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

更新:

这是我的密码:

这是view controller.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];

    }
}

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

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];

UITableViewCell *cell = [self.tableView cellForItemAtIndexPath:indexPath];

[cell updateLabel:@"New string"];

我真的不明白你为什么要在UIlabel上找到推荐人

您有self.runningTimer,所以在tableView中有一个索引行,所以只需


TimerCell*单元格按cellForItemAtIndexPath排序,只需更新此单元格。

更新标签中的文本不需要任何额外更新,无论其在何种视图中(表视图不应影响此操作)。如果标签有外部引用,则无需刷新tableview或任何行。您的代码还有其他问题,也许您可以发布相关的位,我们可以查看一下。更新了代码片段的问题您为什么设置为不使用
重新加载rowsatindexpaths
?因为单元格可以在任何给定时刻滑动到一边。如果我刷新整个单元格,它会滑动复位。我想这基本上就是我所拥有的。最后你会得到一个UILabel的引用,我以前也保存过它。嗯。。。这确实奏效了。我不知道为什么。存储指向标签的指针对常规单元格很有效,但对滑动的单元格不起作用-正如您所看到的,我使用的是
MKSlidingTableViewCell
。它在我的单元格上方有一层额外的容器子视图,其中包含内容。但是,获取单元格并将其导航到标签层次结构,并对其进行更新,效果很好。谢谢。请记住,幻灯片中的单元格是重复使用的,您不能在controllerView中仅从您的单元格查看参考。甚至是弱引用。你为我所做的真是太糟糕了。如果要更新单元格,请始终获取整个单元格,而不是其中的对象。