我已经实现了一个可以在第一个视图上正常工作的UITableView,当内容足够滚动并滚动它时,它会混合单元格的顺序。
存储内容的数组是NSArray而不是NSMutableArray。
有没有人知道这个问题,或者有人知道如何解决这个问题吗?
提前致谢。
以下是cellForRowAtIndexPath
的代码:
static NSString *simpleTableIdentifier = @"TableItem";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TableItem"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:simpleTableIdentifier];
}
self.tabBarItem.badgeValue = nil;
if (screensize.height-200 > ([fixObjects count]/3)*44) {
tableData.scrollEnabled = NO;
} else {
tableData.scrollEnabled = YES;
}
if ([fixObjects count] == 0) {
NSLog(@"Array empty");
cell.textLabel.text = @"No entrys found.";
cell.detailTextLabel.text = @"";
cell.selectionStyle = UITableViewCellSelectionStyleNone;
[cell.textLabel setBackgroundColor:[UIColor clearColor]];
[cell setBackgroundColor:[UIColor colorWithRed:1 green:1 blue:1 alpha:0.2]];
[cell setBackgroundView:nil];
cell.textLabel.textColor = [UIColor whiteColor];
cell.detailTextLabel.textColor = [UIColor whiteColor];
} else {
if (position >= 0 && position < ([fixObjects count]-1)) {
cell.textLabel.text = [NSString stringWithFormat:@"%@ m in %@", [fixObjects objectAtIndex:position], [fixObjects objectAtIndex:position+1]];
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@", [fixObjects objectAtIndex:position+2]];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
[cell.textLabel setBackgroundColor:[UIColor clearColor]];
[cell setBackgroundColor:[UIColor colorWithRed:1 green:1 blue:1 alpha:0.2]];
[cell setBackgroundView:nil];
cell.textLabel.textColor = [UIColor whiteColor];
cell.detailTextLabel.textColor = [UIColor whiteColor];
position += 3;
}
}
return cell;
答案 0 :(得分:1)
正如我们在评论中所说的那样,我真的无法告诉你确切的解决方案,但是位置变量真的很可疑。
请将以下日志添加到&#39; cell.detailTextLabel.text&#39;代码并在滚动期间检查控制台日志:
NSLog(@"cell index - %@ - position - %@ - textLabel - %@",@(indexPath.row),position, cell.textLabel.text);
NSInteger positionCandidate = indexPath.row*3;
NSString* textCandidate = [NSString stringWithFormat:@"%@ m in %@", [fixObjects objectAtIndex:positionCandidate], [fixObjects objectAtIndex:positionCandidate+1]];
NSLog(@"cell index - %@ - posCandidate - %@ - textCandidate - %@",@(indexPath.row),positionCandidate, textCandidate);
我希望这可以帮助一点!
祝你好运!