以下代码似乎没有效果。我希望它以与点击行时突出显示的方式相同的方式突出显示
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
...
[cell.textLabel setHighlighted:YES];
return cell;
}
答案 0 :(得分:27)
这一行将为您重新粉刷细胞,标签和配件:
[tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
答案 1 :(得分:21)
正如其他人所说,您可以使用此方法以编程方式选择单元格:
[tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
但是,您应该小心不要过早调用此方法。
第一次包含所述tableView
的视图控制器为initialized
时,您应该调用此方法的最早时间是viewDidAppear:
。
所以,你应该这样做:
- (void)viewDidAppear:(BOOL)animated
{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; // set to whatever you want to be selected first
[tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
}
如果您尝试将此调用放入viewDidLoad
,viewWillAppear:
或任何其他早期视图生命周期调用,则可能无效或奇怪的结果(例如滚动到正确的位置但不选择细胞)。
答案 2 :(得分:15)
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:1 inSection: 0];
[tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
通常有效
如果您使用界面构建器来构建界面,那么要检查的一件事是您指定了表视图控制器的视图。如果您实际上没有指定视图,则此选择消息可能无处可用。
(通过在界面构建器检查器窗口中选择表视图控制器并将“视图”的插座拖动到要在其中进行选择的表视图来指定视图。)
答案 3 :(得分:3)
- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
- (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
// do something here
}
试试这个:)
答案 4 :(得分:2)
您可以使用
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
...
[cell.textLabel setHighlighted:YES];
return cell;
}
答案 5 :(得分:1)
你有两个选择。使用表格视图的选择:
[tableView selectRowAtIndexPath: indexPath animated: YES scrollPosition: UITableViewScrollPositionNone];
或者在表格视图委托中更改表格单元格的背景颜色:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
cell.backgroundColor = ...
}