下面的代碼似乎沒有效果。我希望它以同樣的方式被highlighed當你在一排挖掘它突出如何突出顯示UITableView中的一行
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
...
[cell.textLabel setHighlighted:YES];
return cell;
}
下面的代碼似乎沒有效果。我希望它以同樣的方式被highlighed當你在一排挖掘它突出如何突出顯示UITableView中的一行
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
...
[cell.textLabel setHighlighted:YES];
return cell;
}
這條線將處理重繪你的細胞,標籤和附件:
[tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
你有兩個選擇。既可以使用表格視圖的選擇:
[tableView selectRowAtIndexPath: indexPath animated: YES scrollPosition: UITableViewScrollPositionNone];
或更改表格單元格的背景色表視圖委託:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
cell.backgroundColor = ...
}
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:1 inSection: 0];
[tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
通常工作
如果你是使用界面構建器來構建界面,需要檢查的一點是您指定了表格視圖控制器的視圖。如果您沒有真正指定視圖,則此選擇消息可能無處可用。
(您可以通過在界面構建器檢查器窗口中選擇表格視圖控制器並將「視圖」的出口拖動到要在其中進行選擇的表格視圖來指定視圖)。
您可以使用
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
...
[cell.textLabel setHighlighted:YES];
return cell;
}
- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
- (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
// do something here
}
試試這個:)
只適用於iOS 6 http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.html – 2013-06-05 18:00:48
正如其他人所指出的那樣,你可以使用此方法以編程方式選擇一個單元格:
[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:
,或任何其他早期的觀點生命週期的呼叫,它可能會無法正常工作或有奇怪的結果(例如作爲滾動到正確的位置,但不選擇單元格)。
在iOS 9上,似乎從`viewWillApear`和`viewDidAppear`工作,並且而不是來自`viewDidLoad`。 – Adrian 2016-04-15 16:21:17
This [post](http://stackoverflow.com/questions/1845773/how-to-initially-select-a-row-in-uitableview)可能會有所幫助。 – petert 2010-12-23 12:35:27