我有一个 UILabel 作为我的单元格的子视图。当用户突出显示一个单元格时,标签文本会改变它的颜色,而当单元格未被突出显示时,颜色会变回来,就像通常的单元格 textLabel 一样。
问题是如果用户点击一个单元格并滚动表格,该单元格将取消突出显示,取消突出显示委托方法将被调用,但它会返回 [2147483647, 2147483647] 作为索引路径并且文本不会改变,因为没有单元格在那个索引路径上。
这是代码:
- (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath*)indexPath{
NSInteger section = [indexPath section];
//only change the text on cells at section 1
if (section == 1) {
//get cell with given index path
UITableViewCell *currentCell = [tableView cellForRowAtIndexPath:indexPath];
// retrieve the UILabel by it's tag
UILabel *cellLabel = (UILabel *)[currentCell viewWithTag:1011];
cellLabel.textColor = [UIColor darkGrayColor];
}
}
- (void)tableView:(UITableView *)tableView didUnhighlightRowAtIndexPath:(NSIndexPath*)indexPath{
NSInteger section = [indexPath section];
if (section == 1) {
UITableViewCell *currentCell = [tableView cellForRowAtIndexPath:indexPath];
UILabel *cellLabel = (UILabel *)[currentCell viewWithTag:1011];
[cellLabel performSelector:@selector(setTextColor:) withObject:[UIColor lightGrayColor] afterDelay:0.2f];
}
}
当用户滚动表格并突出显示单元格时,如何检索正确的单元格以更改其 UILabel 子视图文本?