UITableCell重用自己

时间:2012-06-12 06:44:24

标签: iphone ios uitableview

我做了一个UITableViewCell,我在该表中有20行,其中屏幕上一次有5行。 我在didSelect委托方法中设置了附件视图检查标记,该方法正在选择哪一行。我担心的是假设选择第一行并检查其附件类型,现在如果我滚动表格,我们看到第六行也被检查。我知道细胞正在重复使用,而不是再次创造自己。

2 个答案:

答案 0 :(得分:1)

该模型应该能够处理哪个单元格被检查,哪个单元格不被检查。为了简化问题,您可以保留一个应该检查NSIndexPath的数组。如果当时只能检查一个,那么NSIndexPath类型的ivar就足够了。


- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([[aTableView cellForRowAtIndexPath:indexPath] accessoryType] == UITableViewCellAccessoryCheckmark)
    {
            // Ok this one is selected, so we will remove it from the Reference Array.

    }
    else
    {
        // Ok this one doesn't has a checkMark
        // First add the checkmark
        [[aTableView cellForRowAtIndexPath:indexPath] setAccessoryType:UITableViewCellAccessoryCheckmark];

        // Add the NSIndexPath to the Array of references
    }
}

答案 1 :(得分:-1)

在委托方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSString *cellId = [NSString stringWithFormat:@"cell%d",indexPath.row];
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId ];
    if (cell==nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
                                       reuseIdentifier:cellId ] autorelease];
    }
}

将不同的单元格ID设置为不同的单元格行。