2012-02-20 88 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