我有一个包含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];
}
这是我使用的代码。
我确定在某个地方我犯了一个错误。但是,我无法找到它。
答案 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];
}