2016-11-15 112 views
-1

我將圓形自定義進度視圖添加到所有表格視圖單元格,如下所示。從所有表格視圖單元中移除進度視圖

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]; 

欲10秒

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

和updateUI方法我除去細胞內容視圖的子視圖的NSTimer後重新加載圓形進展。

有了這個,我只能夠重新加載最後一個單元格進度視圖。它不適用於所有的細胞。

+0

分享一些代碼。更新UI方法中的 – KKRocks

+0

:NSArray * subviews = [cell.contentView subviews]; (子視圖中的M13ProgressView *子視圖){ [subview removeFromSuperview]; } –

+0

其中是啓動計時器?在添加? – KKRocks

回答

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; 
} 
0

你的代碼有很大的問題。您將許多進度視圖添加到同一個單元格。發生這種情況是因爲表視圖重新使用了單元格而沒有修改。
如果單元格被重用,您將向其添加第二個進度視圖。您應該檢查此方法是否包含進度視圖。例如,您可以使用此代碼:

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