2012-12-28 23 views
3

我試圖迫使一個UITableViewCell使用selectRowAtIndexPath的選擇(高亮)..如何使用selectRowAtIndexPath強制使用UITableViewCell選擇?

對於例如, 可以說,我想總有一個表視圖中的第一個單元格加以強調,我應用以下邏輯viewDidAppear

[self.tableViewPrompts selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:0]; 

作品nicely.But當我嘗試調用上述方法和之前重裝的tableview之前和調用此方法後別處應用相同的邏輯應用中的小區不selected.I甚至試圖取消選擇其他小區但似乎沒有任何方法可行!

我甚至使用tableview的委託來強制調用didSelectRowAtIndexPath.Event,這是行不通的。

PS:單元格的選擇不會觸發任何操作,我試圖實現的是突出顯示所需的單元格。

我在這裏做錯了什麼?

非常感謝幫助!

+0

請確保在selectRowAtIndexPath之後未調用reloadData。 – jlukanta

回答

4

單元格的選擇不會觸發任何操作,我試圖實現的是突出顯示所需的單元格。

爲什麼不使用單元格的高亮屬性?

UITableViewCell *cell = [self cellForRowAtIndexPath: [NSIndexPath indexPathForRow: 0 inSection: 0]]; 
cell.highlighted = YES; 

不能測試它現在,但它應該工作.....

編輯

更重要的是,當然是:改變你的cellForRowAtIndexPath做

-(UITableViewCell) tableView:cellForRowAtIndexPath: 
//... 
if (indexPath.row == 0 && indexPath.section == 0) cell.highlighted = YES 
else cell.highlighted = NO; 
//... 
return cell; 
+0

這正是我所需要的。你會認爲selectRowAtIndexPath會爲你做這件事......:P – Lance

+0

被警告說,簡單地設置一個單元格的「高亮」屬性並不會使父表格視圖的角度「選擇」單元格。它只是改變了單元格的外觀。如果這就是你想要的,那麼這很好。 – devios1

+0

在2013年的這個問題中,OP表示「我想要實現的一切都是突出所需的細胞」 - 因此應該清楚 – Mario

3

我很困惑,爲什麼不在你的情況下工作。這裏是我的方法,我從幾個地方用我的,包括viewDidAppear視圖控制器裏面,我看到你在做什麼並沒有實質性差別:

- (void)selectRow1 
{ 
    NSIndexPath* idx = [NSIndexPath indexPathForRow:1 inSection:0]; 
    [_table selectRowAtIndexPath:idx animated:NO scrollPosition:UITableViewScrollPositionMiddle]; 
    [self tableView:_table didSelectRowAtIndexPath:idx]; 
} 

_table是我的表屬性變量,並調用didSelectRowAtIndexPath被製造成選擇的動作可能會發生,否則與您的代碼唯一真正的區別是scrollPosition參數。

0

只需使用setSelected突出顯示單元格:

[cell setSelected:YES]; 

我爲此創建了此擴展UITableView-Ext