我使用此功能突出显示表格单元格边框:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if(currentIndexPath != indexPath){
[self clearCellRowBorder];
CGColorRef cyan = [UIColor colorWithRed: 0.0f/255.0f green: 255.0f/255.0f blue: 255.0f/255.0f alpha:1.0f].CGColor;
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
[cell.contentView.layer setBorderColor: cyan];
[cell.contentView.layer setBorderWidth:2.0f];
currentIndexPath = indexPath;
}
}
假设我有很多行,超出屏幕大小所以我需要滚动到底部看到更多行。我遇到的问题是当我选择第一行时,第一行突出显示一切正常,但是当我滚动到底部看到其他看不见的行时,其中一个看不见的行也会突出显示。那么任何人都可以帮我解决这个问题吗?
答案 0 :(得分:1)
新,
由于您已在currentIndexPath中保存了选定的索引路径,
你可以,
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//after creating cell :)
if(currentIndexPath != indexPath){
[self clearCellRowBorder];
}
else {
CGColorRef cyan = [UIColor colorWithRed: 0.0f/255.0f green: 255.0f/255.0f blue: 255.0f/255.0f alpha:1.0f].CGColor;
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
[cell.contentView.layer setBorderColor: cyan];
[cell.contentView.layer setBorderWidth:2.0f];
}
}
那应该做你的工作:)快乐的编码:)
答案 1 :(得分:0)
表格视图单元格正在“重用”以提高性能。因此,您看到突出显示的单元格是重复使用的单元格。
要解决此问题,您可以覆盖UITableViewCell方法 prepareForRese 并将突出显示设置为false(否)。
修改强> 例如:
- (void)prepareForReuse {
[cell.contentView.layer setBorderWidth:0.0f];
}