2017-07-25 69 views
0

我的問題:我的一些自定義UITableViewCells包含額外的UILabel和額外的UIView以獲取更多信息。 在我的代碼中,當這個對象沒有任何信息時,我刪除了這些額外的UILabel和UIView。 但是每當用戶滾動瀏覽UITableView時,這些標籤都是隱藏的,儘管這些單元還有其他信息並顯示在另一個單元中。UITableViewCell在滾動後更改內容

這裏是我的代碼:

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

NBSnackTableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"Cell"]; 


NSDictionary *softdrinkDict = [_allSoftdrinksArray objectAtIndex:indexPath.row]; 

cell.snackNameLabel.text = [softdrinkDict valueForKey:@"name"]; 
cell.snackPriceLabel.text = [NSString stringWithFormat:@"%@ - %@", [softdrinkDict valueForKey:@"size"], [softdrinkDict valueForKey:@"preis"]]; 


    if ([softdrinkDict valueForKey:@"info"]) 
    { 
     cell.accessoryType = UITableViewCellAccessoryDetailButton; 
     cell.tintColor = [NBColor primaryTextColor]; 
     cell.snackInfoLabel.text = [softdrinkDict valueForKey:@"info"]; 
    } 
    else 
    { 
     cell.accessoryType = UITableViewCellAccessoryNone; 
     [cell.snackInfoLabel removeFromSuperview]; 
     [cell.snackInfoView removeFromSuperview]; 
    } 

    if ([softdrinkDict valueForKey:@"zusatzstoffe"]) 
    { 
     cell.snackZusatzstoffLabel.text = [softdrinkDict valueForKey:@"zusatzstoffe"]; 
    } 
    else 
    { 
     [cell.snackZusatzstoffLabel removeFromSuperview]; 
    } 

[cell layoutContentWithRect:cell.bounds]; 

return cell;} 
+0

所以應被顯示在單元格中的內容出現在另一小區代替? –

回答

1

我看到一個問題:

你從上海華去除標籤,但不會重新將其添加爲您的細胞的子視圖。

您不必在標籤上調用removeFromSuperview,而是可以將其文本設置爲@「」,或者在有數據要顯示時確保將標籤添加到單元格的contentView。

實施例:

if ([softdrinkDict valueForKey:@"zusatzstoffe"]) 
{ 
    if (![cell.snackZusatzstoffLabel isDescendantOfView:cell.contentView]) { 
     [cell.contentView addSubview:cell.snackZusatzstoffLabel]; 
    } 
    cell.snackZusatzstoffLabel.text = [softdrinkDict valueForKey:@"zusatzstoffe"]; 
} 
else 
{ 
    [cell.snackZusatzstoffLabel removeFromSuperview]; 
} 
+0

它工作正常!感謝您的解決方案!這對我幫助很大。 –

+0

@ profidash_98非常歡迎! –