2012-06-04 58 views
9

我有一個自定義的UITableViewCell基於它是在哪一行而改變顏色:如何防止自定義UITableViewCells在取消選擇時閃爍白色?

TableViewController.m

- (void)willDisplayCell:(GSRSongCell *)cell atIndexPath:(NSIndexPath *)indexPath; 
{ 
    if (indexPath.row % 2 == 0) { 
     [cell lighten]; 
    } else { 
     [cell darken]; 
    } 
} 

CustomTableViewCell.m

- (void)lighten 
{ 
    self.selectedBackgroundView.backgroundColor = [UIColor whiteColor]; 
    self.contentView.backgroundColor = [UIColor whiteColor]; 
    self.primaryLabel.backgroundColor = [UIColor whiteColor]; 
    self.secondaryLabel.backgroundColor = [UIColor whiteColor]; 
} 
- (void)darken 
{ 
    UIColor *darkColor = [UIColor colorWithR:241 G:241 B:241 A:1]; 
    self.selectedBackgroundView.backgroundColor = darkColor; 
    self.contentView.backgroundColor = darkColor; 
    self.primaryLabel.backgroundColor = darkColor; 
    self.secondaryLabel.backgroundColor = darkColor; 
} 

然而,當我打電話deselectRowAtIndexPath:animated:YES,動畫消失的在selectedBackgroundColor應該更暗的單元格中的白色。

然後我意識到取消動畫與selectedBackgroundColor無關;事實上,取消動畫實際上是基於tableView.backgroundColor屬性!

如何覆蓋取消動畫以淡入我的單元格的背景顏色?

+0

我也嘗試將tableView.backgroundColor設置爲[UIColor clearColor] - 這不起作用。 – oliland

回答

9

它實際上以動畫方式返回單元格背景顏色,所以你必須將它設置得

在減倉法

self.backgroundColor = [UIColor whiteColor]; 

加入這一行,這在變暗方法

self.backgroundColor = darkColor; 
+1

不敢相信我沒有嘗試過。謝謝! – oliland

3

剛將單元格選擇設置爲UIBuilder中或代碼中的UITableViewCellSelectionStyleNone:

cell.selectionStyle = UITableViewCellSelectionStyleNone; 
+0

對於我在Swift中有'cell.selectionStyle = UITableViewCellSelectionStyle.None' –

相關問題