如何更新UITableView的屏幕外单元格

时间:2012-07-10 07:01:45

标签: iphone uitableview

我在我的应用程序中有一个UITableView,我已经定制了它。每个单元格包含一个Imageview和一个按钮。当我点击按钮时,下载过程将开始,按钮将被替换为UIProgressView。下载完成后,将删除进度视图,并再次显示具有不同状态的按钮。它适用于屏幕中可见的单元格。但是一旦下载完成,我无法更新屏幕外的单元格。即使单元格在屏幕外,进度视图更新也在起作用。但是在尝试使用按钮替换进度视图时遇到问题。

以下是我的一些代码示例:

用于更新,下载完成后,

//Creating custom cell with the Id value and upadting the cell
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:btnId inSection:0]; //btnId is the id of the button clicked
UIMenuItemCell *cell = [(UIMenuItemCell *)[self.menuItemsPanel cellForRowAtIndexPath:indexPath] retain];

//hiding the progressview
for (UIProgressView *currentProgress in cell.contentView.subviews) {
    if ([currentProgress isKindOfClass:[UIProgressView class]]) {
        currentProgress.hidden = YES;
        [cell.contentView reloadInputViews];
    }
}
for (UIButton *currentBtn in cell.contentView.subviews) {
    if ([currentBtn isKindOfClass:[UIButton class]]) {
        if (currentBtn) {
        //updating the button status here, once the download is complete
   }
}

请帮忙。

1 个答案:

答案 0 :(得分:1)

当Cell进入OnScreen时,将调用cellForRowAtIndexPath。

在那个方法中,进行检查

if(download completed) remove progress bar and add button.