2011-11-11 114 views
0

我遇到過這種情況,我試圖做的事情基本上是調用tableView reloadData然而並非所有單元格中的值都得到更新。前5行始終沒有更新... I必須滾動到底部,然後再次進行更新。這是爲什麼發生?UITableView重新加載數據問題

這裏是我的代碼:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
     [cell.textLabel setFont:[UIFont fontWithName:@"Arial" size:16]]; 
    } 


    //add a button to set to accessory view 
    UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    //I missed setting the frame yesterday! 
    //[button setFrame:CGRectMake(200, 20, 20, 20)]; 
    [button setImage:[UIImage imageNamed:@"addsource.png"] forState:UIControlStateNormal]; 
    [button addTarget:self action:@selector(changeButton:) forControlEvents:UIControlEventTouchUpInside]; 
    [button setBackgroundColor:[UIColor clearColor]]; 
    cell.accessoryView = button; 

    if ([[self.content objectAtIndex:indexPath.row] isKindOfClass:[Source class]]){ 
     Source * source = [self.content objectAtIndex:indexPath.row]; 
     if (![source.type isEqualToString:@"featured"]){ 
      [cell.textLabel setText:source.domain]; 
      NSURL* URL = [NSURL URLWithString:source.imageUrl]; 
      [cell.imageView setImageWithURL:URL 
          placeholderImage:[UIImage imageNamed:@"placeholder.jpg"]]; 
     } 
    } 

    return cell;  
} 

,這被稱爲每次我刷新整個數據集:

[self.content removeAllObjects]; 
     [self.content addObjectsFromArray:objects]; 
     [self.tableView reloadData]; 
+1

您是否嘗試過調試? if(![source.type isEqualToString:@「featured」]){'return?顯然你的單元格不會在你的源類型是「特色」的情況下得到更新。仔細檢查內容數組中的所有值。 – Maggie

+0

是的,這實際上是問題 – xonegirlz

+0

我會寫它是一個答案,所以你可以接受它 – Maggie

回答

0

嘗試調試以下行: if (![source.type isEqualToString:@"featured"]){

明顯的細胞將不會在你的源類型爲「特色」的情況下進行更新。仔細檢查內容數組中的所有值

0

我沒有挖成你的代碼,但是這聽起來像一個症狀你可能會看到細胞何時被重複使用而沒有從之前的外觀完全重置。

當一個單元格出列時,它不會被重置,它只會從表格視圖中移除。所以除非你在下一次恰好分配時重置它,否則它會攜帶以前的配置和設置。

因此,當您配置單元格時,請確保在所有情況下都恢復單元格的所有方面,而不僅僅是這次您恰好返回的單元格的特定變體的設置。

希望有所幫助。