关于刻度线和重新加载单元格的UITableView问题

时间:2011-08-27 13:26:34

标签: iphone objective-c ios tableview

我有一个包含5个部分的tableview,每个部分的行数可变,带有自定义单元格(用于检查和取消选中单元格上的图像)。当我在第一部分中选择一行时,tableview也会选择最后一部分中的任何一行。

当我向上和向下滚动时,选中的行会在各个部分中随机移动。

问题是当我删除tableview中的一个部分时它不存在。即使是多个部分。

任何人都可以帮助我吗?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *kCustomCellID = @"MyCellID";
    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:kCustomCellID];
    if (cell == nil)
    {
        cell = (CustomCell *) [[[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kCustomCellID]autorelease];
    }

这是我使用的代码。

我确定在某个地方我犯了一个错误。但是,我无法找到它。

2 个答案:

答案 0 :(得分:0)

这是因为重复使用表中的单元格,请阅读有关表重用方法的更多信息。 为了详细说明,对单元格所做的更改将被复制到其他单元格,因为单元格将重用于可查看的单元格。

答案 1 :(得分:0)

我们需要查看一些代码来正确诊断问题,特别是- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {的实现。

您是否正确重用apples docs中指定的单元格,即

static NSString *cellIdentifier = @"MyAwsomeCell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];
}