您好我最近遇到了UITableViewCell
的问题-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"ContentCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
CloseButton *cButton = (CloseButton *)[cell viewWithTag:20];
[cButton addTarget:self action:@selector(deleteDetector:) forControlEvents:UIControlEventTouchUpInside];
...
return cell;
}
稍后,在我的删除检测器上:
-(void)deleteDetector:(id)sender {
CloseButton *cButton = (CloseButton *)sender;
[cButton setHidden:YES];
}
当我开始向下滚动到1000个单元格时,按钮开始出现,其中一些开始消失。
答案 0 :(得分:1)
好的,所以如果我理解你的问题,我会假设发生了什么:
您正在按下单元格上的按钮,这会隐藏按钮。然后,您向下滚动,出现另一个单元格,其中已经隐藏了按钮(即使您还没有按下该行的按钮)。
这是因为您的单元格实际上正在被重用,这意味着当其中一个已隐藏按钮的单元格被重用时,该按钮仍将被隐藏(因为它实际上是同一个单元格)。快速修复'要证明这是取消隐藏tableView:cellForRowAtIndexPath:
方法中的按钮,如下所示:
[cButton setHidden:NO];
在此之后的某个地方做这件事,显然:
CloseButton *cButton = (CloseButton *)[cell viewWithTag:20];
这样可以防止细胞出现时隐藏按钮,而不应该隐藏。但是,这也意味着如果你按下一个单元格上的按钮,然后它离开屏幕并重新打开,它也会再次显示该按钮,当你可能不想要它时。如果您不希望这种情况发生,您必须跟踪模型中您按下按钮的行。