从所有表格视图单元格中删除进度视图

时间:2016-11-15 06:47:40

标签: ios objective-c uitableview

我正在为所有表视图单元格添加循环自定义进度视图,如下所示。

cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

// progressView =  (M13ProgressViewPie *)[cell viewWithTag:100];

progressView = [[M13ProgressViewPie alloc] initWithFrame:CGRectMake(0.0, 0.0, 50.0, 5.0)];
progressView.tag = indexPath.row;

NSLog(@"%ld",(long)progressView.tag);
// Configure the progress view here.
[progressView setAnimationDuration:10.0];

// Add it to the view.
[cell.contentView addSubview: progressView];

// Update the progress as needed
[progressView setProgress: 1.0 animated: YES];

我想在nstimer为10秒后重新加载循环进度

[NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(updateUI) userInfo:nil repeats:YES];

并在updateUI方法中我删除了单元格内容视图子视图。

有了这个,我只能重新加载最后一个单元格进度视图。它不适用于所有细胞。

2 个答案:

答案 0 :(得分:0)

在CellForRowAtIndextPath

if(isProgressRemove) {
    NSArray* subviews = [cell.contentView subviews];
    for (UIView *view in subviews) {
        if((view isKindOfClass:[M13ProgressView class])) {
            [subview removeFromSuperview];
        } 
    }
}
ViewDidLoad中的

- (void)updateUI {
    isProgressRemove = yes;
    [self.tableView reload];
    isProgressRemove = NO;
}

答案 1 :(得分:0)

您的代码存在很大问题。您可以向同一单元格添加许多进度视图。之所以发生这种情况,是因为表视图无需修改即可重复使用单元格 如果重复使用单元格,则会向其添加第二个进度视图。您应该检查此方法是否单元格包含进度视图。例如,您可以使用以下代码:

<...>
UIView* currentProgressView = [cell.contentView viewWithTag:100];
if (currentProgressView)
{
  //remove or update progress value
}
else
{
  //create if needed
}
<...>