2012-01-27 69 views
1

具體的UITableViewCell我有一個tableview中,我想一個imageview的增加它在選擇在該行的單元格的內容查看。addSubview對選擇

這是我當前的代碼,當我點擊任一單元格它只會將imageView添加到最後一行,而不是我點擊的那一行。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    playIcon = [[UIImageView alloc]initWithFrame:CGRectMake(20, 22, 9, 12)]; 
    UIImage *image = [UIImage imageNamed: @"cell_play.png"]; 
    [playIcon setImage:image]; 
    [cell.contentView addSubview:playIcon]; 
} 
+0

你沒有表現cell'如何'聲明/初始化。我會NSLog它,以確保它是有效的...最好使用' - (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath'。 – smparkes 2012-01-27 21:36:00

回答

0

首先,您沒有在特定行處識別出單元格。既然你的編譯器沒有抱怨,我認爲這個單元是一個伊娃。它指向它指向的最後一個單元格,這很可能是表格中的最後一個單元格。

您必須小心,不要在UITableview方法外設置單元格的內容,包括UITableView方法cellForRowAtIndexPath:`。這在我提供的最近答案at this link中有描述。

所以,如果你看到這個答案,你會看到tableview方法確保單元格被正確渲染,即使當tableview滾動和單元格出現和消失。我建議您使用某種標籤或屬性設置數據源,以便您可以使用該標籤或屬性查看該圖像需要存在。這樣,即使您滾動單元格,它也會在那裏消失並重新出現。

+0

不好意思,但是「不要在UITableview方法之外設置單元格的內容」顯然是錯誤的。在談論重新加載單元格時,Apple文檔說,如果您可以更新單元格視圖,請執行此操作而不是重新加載。絕對正確的是,某些類型的附件(非UIViews的東西)不一定會更新,但直觀的視圖層次結構應該沒問題。 – smparkes 2012-01-27 21:33:54

+0

我沒有說任何關於重新加載的內容。重新加載的機制與我所創造的點無關。將單元格更新放入cellForRowAtIndexPath:方法(或通過源頭方法調用)可確保在渲染單元格時同時正確渲染內容。這可能是由程序員的代碼明確調用其中一個重載方法引起的,但它也可以確保在用戶滾動表格時呈現內容是正確的。這是因爲tableView管理需要重新加載單元格。 – Jim 2012-01-27 23:13:57

+0

對不起。我試圖引用蘋果文檔,但我無法將自己的手指放在硬引用上:它在某處附近談論重裝(儘管我意識到這不是重裝例)。我只是想指出一個UITableViewCell是一個UIView,並且所有正常的UIView方法都可以。 – smparkes 2012-01-27 23:27:21

1

你可以像雨燕2.0對我來說這

[[tableView cellForRowAtIndexPath:indexPath] addSubview:playIcon]; 
0

工作,UIc​​ollectionView和定義UITableViewCell:

CV_Posts.cellForItemAtIndexPath(index)?.addSubview(imag_curtir)