2011-07-26 92 views
0

所以我必須直接從筆尖文件加載細胞:selectedBackgroundView在自定義的UITableViewCell

NSArray *cellContents = [[NSBundle mainBundle] loadNibNamed:@"ResultsTableViewCell" owner:self options:nil]; 
     cell = [cellContents objectAtIndex:0]; 

在筆尖文件,有一個UITableViewCell和兩個UIViews,每個都有自己的子視圖。 Strucuture:

-TableViewCell 
    Label 1 
    Label 2 
-UIView A 
    UIView a 
    UIView b 
    UIImageView c 
    UIImageView d 
-UIView B 
    UIView e 
    UIView f 
    UIImageView g 
    UIImageView h 

所以UIView的A被連接到backgroundView屬性爲的UITableViewCell,UIView的B連接到selectedBackgroundView屬性。

問題: 因此,爲什麼A顯示了良好的細胞作爲它的所有子視圖的背景,並且B中的UIImageViews工作正常,但B中的UIViews並不顯示,但是我改變了它?謝謝!

+0

我有這個確切的問題。你有沒有找到解決方案? – jimmyg

回答

0

這是我發現我的情況。當我登錄了UIView的背景顏色的RGB和α,我發現他們都得到設置爲0,選擇單元格時:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    CGFloat red, green, blue, alpha; 
    [viewE.backgroundColor getRed:&red green:&green blue:&blue alpha:&alpha]; 
    NSLog(@"Selected: Red=%f, Green=%f, Blue=%f, alpha=%f", red, green, blue, alpha); 
} 

-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath { 
    CGFloat red, green, blue, alpha; 
    [viewE.backgroundColor getRed:&red green:&green blue:&blue alpha:&alpha]; 
    NSLog(@"Deslected: Red=%f, Green=%f, Blue=%f, alpha=%f", red, green, blue, alpha); 
} 

最初,沒有被選中。點擊表中的一行,日誌顯示:

Selected: Red=0.000000, Blue=0.000000, Green=0.000000, alpha=0.000000 

和我的子視圖不會出現(注意Alpha = 0)。有趣的是,當我登錄viewE.alpha,這表明它是1

再次點擊該行取消對它的選擇:

Deselected: Red=0.667000, Blue=0.776000, Green=0.220000, alpha=1.000000 

這就是我的期望。

我的表格單元格是一個自定義的UITableViewCell。所以在我的自定義UITableViewCell類,我添加了這個代碼:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated { 
    UIColor *saveColor = self.viewE.backgroundColor; 
    [super setSelected:selected animated:animated]; 
    if (selected) 
     self.viewE.backgroundColor = saveColor; 
} 

現在所選單元格時viewE出現的子視圖。

好像代碼這裏補償不應該擺在首位已經存在的條件,但它的作品!