2014-08-29 75 views
-1

我有一個UITable視圖與隨機數的UIImageView在每一行中。在單行的構造中,我使用[self addSubView: xxx]for週期來添加我需要添加的每個UIImageView(我的模型有一個URL數組)。但是現在我已經注意到,當UITableView重複使用這些行並且它不會清除添加的UIImageViews。 我綁在方法onPrepareForReuse手動刪除它們作爲代碼:如何從PrepareForReuse上的UITableView自定義行中刪除視圖?

if(_messageContentsFrames != nil){ 
    for(NVChatMessageContent *singleContent in _messageContentsFrames){ 
     [singleContent removeFromSuperview]; 
    } 
} 

但它給我的錯誤。如何在重用視圖時完全重置視圖?

回答

0

您可以在-tableView:cellForRowAtIndexPath:方法中刪除這些imageViews。這對我而言總是有效的。
順便說一句,如果你做了這樣的工作,你真的需要重用單元格嗎?創造新細胞不是更容易嗎?
或者最好不要刪除imageViews,而是重新配置它們以重新使用並刪除那些視圖,該單元不需要。

+0

。它給我例外,它無法找到選擇器的實例來刪除視圖。如果我想到它的行的娛樂功能。這是錯誤的,還是我可以重用? – 2014-08-29 13:01:12

0

選項1.設置標籤,就可以UIImageView(使用:imageView.tag = 123456),然後在tableView:cellForRowAtIndexPath:你應該得到的特定視圖中使用:

id imageView = [self.view viewWithTag:yourInteger]; 
[imageView removeFromSuperview]; 

選項2.使用

for(UIView *view in cell.subviews) { 
    if ([view isKindOfClass:[UIImageView class]]) { 
     [view removeFromSuperView]; 
    } 
} 
已經嘗試過
相關問題