使用UITableView进行编码时,遇到了我无法理解的错误。我的表格有3行,每行设置50px,除了我设置500px的第二行,它填满了整个屏幕。当我向下滚动到底部时出现问题,我的底部角色重复第一行。这是我的自定义代码:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return 3;
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"TestTable";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
if (indexPath.section ==0 && indexPath.row==0) {
cell.contentView.backgroundColor = [UIColor redColor];
}
if (indexPath.section ==0 && indexPath.row==1) {
cell.contentView.backgroundColor = [UIColor blueColor];
}
if (indexPath.section ==0 && indexPath.row==2) {
cell.contentView.backgroundColor = [UIColor greenColor];
}
}
// Configure the cell...
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row==1) {
return 400;
}
return 50;
}
根据代码,第一行是红色,第二行是红色,第三行是蓝色。但我的最后一行是红色(重复第一行)。如果我将第2行设置为短于屏幕,例如100px,第三排装载罚款。
原创展示
向下滚动
欣赏所有类型的建议,因为我已经没想到这是怎么回事。
由于
答案 0 :(得分:1)
当第二行为长时,第一行变为不可见,其单元格在最后一行中重复使用。这就是为什么每次调用tableView:cellForRowAtIndexPath:
时都要配置单元格,即(cell == nil) {...}
阻止之后:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"TestTable";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// Configure the cell...
if (indexPath.section == 0 && indexPath.row==0) {
cell.contentView.backgroundColor = [UIColor redColor];
}
if (indexPath.section ==0 && indexPath.row==1) {
cell.contentView.backgroundColor = [UIColor blueColor];
}
if (indexPath.section ==0 && indexPath.row==2) {
cell.contentView.backgroundColor = [UIColor greenColor];
}
return cell;
}