2012-02-20 100 views
16

我發現這種方法叫做- (void)prepareForReuse。我read the document但我不明白如何使用它。如何使用prepareForReuse方法

當我滾動我的桌面時,它卡住了,或者有很慢的滾動,我打算使用prepareForReuse。有人能指點我一個很好的教程或給我一些示例代碼,所以我可以學習。

對不起,我沒有任何代碼來演示我的工作。

+1

我懷疑'prepareForReuse:'會解決你的性能問題... – JustSid 2012-02-20 14:28:55

+0

那麼它有什麼用途? – shajem 2012-02-20 14:29:33

+0

要清除「UITableViewCell」中的任何內容,您可能需要重置,然後再次出現在「UITableView」中。它只需要你用自己的控件編寫你自己的子類,你不應該直接調用它。 – JustSid 2012-02-20 14:32:22

回答

16

prepareForReuse方法是由擁有的表格視圖在目前不需要的單元格中調用的。您應該在這裏爲您的自定義單元格進行小規模清理,例如重置Alpha值等,以便稍後可以重用它。你不應該自己調用它,順便說一句。

如果您正在實現自定義表格視圖單元格,您只需要關心它:您將其覆蓋以進行清理。

你「使用」它只是通過使用tableView:cellForIndexPath:重用標識符:

static NSString *CellIdentifier = @"Identifier"; 

cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
            reuseIdentifier:CellIdentifier]; 
    [cell autorelease]; 
    // Set up your cell 
} 

爲了進一步提高您的表視圖的表現,看到問題Tricks for improving iPhone UITableView scrolling performance?

11

,如果你有邏輯您可以使用它您的自定義單元類可能會或可能不會修改單元屬性。例如,如果你的表叫你的,但在某些情況下,它可以修改背景顏色,但某些情況下,它不會和會使用你設置的默認值,那麼你就需要實現

-(void)prepareForReuse{ 
    [super prepareForReuse]; 

    // Then Reset here back to default values that you want. 
} 

否則,如果你的邏輯不改變它,它可以重用你設置的以前的值。

+2

如何設置它以便修改的單元格保持修改狀態,而其他將被「重用」的單元格保持爲默認選項? – lukaivicev 2015-11-25 15:31:55

+0

@lukesIvi你能找出解決你的問題的方法嗎? – dnadri 2016-02-24 05:17:05