我在uiviewcontroller的childViewController中有一个uitableview。在uitableview中,我使用了自定义的uitableviewcell。在那个自定义的uitableviewcell中,我有最喜欢的复选框按钮。
这个uitableview包含大约30条记录,大约10条记录显示在可见屏幕上,然后滚动另外10条记录,然后是另一条记录。
问题是当我在第一行选择一个uibutton,然后向下滚动uitableview时,我看到它在第11行和第21行也被选中了。我现在已经半天了,但无法发现问题。请帮忙。
以下是cellForRowAtIndexPath
代码:
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
ABCViewCell *cell = (ABCViewCell*)[tableView dequeueReusableCellWithIdentifier:@"ABCViewCell" forIndexPath:indexPath];
cell.delegate = self;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.layoutMargins = UIEdgeInsetsZero;
cell.labelDesiredDate.text = [dateFormatter stringFromDate:[NSDate date]];
cell.labelJournaledDate.text = [dateFormatter stringFromDate:[NSDate date]];
return cell; }
谢谢, 阿都
答案 0 :(得分:1)
您必须记住,当您使用dequeueReusableCellWithIdentifier
方法时,您的单元格将开始用于绘制所有内容。因此,您必须考虑清理数据的方法。
如下:
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
ABCViewCell *cell = (ABCViewCell*)[tableView dequeueReusableCellWithIdentifier:@"ABCViewCell" forIndexPath:indexPath];
if ([self shouldMyCellBeSelected]) {
[cell displayButtonSelected];
} else {
[cell displayButtonUnselected];
}
return cell;
}
希望有所帮助