我有一个使用 UISplitViewController 的 iPad 应用程序(左侧是 UITableView,右侧是详细视图)。当您点击它时,我的表格视图会以蓝色突出显示选定的单元格。
当我调用以下方法时,单元格被选中但未以蓝色突出显示:
[self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionTop];
我花了几天时间摆弄各种委托方法和黑客,试图让单元格以编程方式突出显示,就像它被点击一样。我做不到。
我几乎设法做到了这一点:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (shouldHighlightCell)
{
NSIndexPath *indexPathForCellToHighlight = [NSIndexPath indexPathForRow:0 inSection:0];
if ([indexPath isEqual:indexPathForCellToHighlight])
{
cell.selected = YES;
shouldHighlightCell = NO;
}
}
}
只要我也有这个,它就可以工作(否则即使点击另一个单元格,它也会保持选中状态):
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSIndexPath *ip = [NSIndexPath indexPathForRow:0 inSection:0];
if ([[self.tableView cellForRowAtIndexPath:ip] isSelected])
{
[[self.tableView cellForRowAtIndexPath:ip] setSelected:NO];
}
NSIndexPath *iToTheP = indexPath;
return iToTheP;
}
我知道这是一个奇怪而复杂的解决方法。我不介意,但它甚至不能完全工作。如果滚动到屏幕外,选定的单元格将失去其突出显示,而已被点击的单元格在滚动到屏幕外时仍保持突出显示。
我对此完全感到困惑。我敢肯定,甚至不需要这种解决方法,因为有一个更简单的解决方案。