2012-03-10 86 views
6

我覺得這是一個需要特別注意的問題......我的Google-fu很不錯,但是我一直沒能得到任何有用的東西。UITableView聲明失敗selectRowAtIndexPath

這是最簡單的事情,但我似乎無法弄清楚它的問題是什麼。

我有一個UITableView。這是我的VC調用_form的子視圖。我將其用於樣式目的,而不是真的顯示數據。它有2個單元。

在某個事件上,我試圖選擇一個不同的單元格,使用selectRowAtIndexPath:animated:scrollPosition。

當我這樣做,它SIGABRTS。

一個簡單的例子:

- (IBAction)submitClicked:(id)sender 
{ 
    [_submit setTitle:@"Wha!?" forState:UIControlStateNormal]; 
    NSIndexPath *row = [NSIndexPath indexPathWithIndex:0]; 
    NSLog(@"%d", [[_form indexPathForSelectedRow] row]); 
    [_form selectRowAtIndexPath:row animated:YES scrollPosition:YES]; 
} 

按鈕的標題被​​改變,並且該表打印所選擇的行是0或1,但在試圖選擇所需的細胞,它打破:

2012-03-09 21:57:39.905 <omitted>[16329:207] 0 
2012-03-09 21:57:39.908 <omitted>[16329:207] *** Assertion failure in -[NSIndexPath row], /SourceCache/UIKit_Sim/UIKit-1912.3/UITableViewSupport.m:2598 
(gdb) 

我的假設是,這意味着我的表的配置有問題,但我不知道是什麼。正常情況下(單擊它)選擇表格中的單元格正在工作,如我的tableView:didSelectRowAtIndexPath中預期的響應所示。除此之外,其他一切都可以正常工作。

(另外,我的其他人有額外的調試信息回覆,而不僅僅是「(GDB)」我怎樣才能得到呢?)

謝謝!

回答

18

tableview單元格的索引路徑需要同時有一個行和一個部分。嘗試使用工廠方法(在NSIndexPath UIKit Additions中定義)創建索引路徑代替:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; 
[_form selectRowAtIndexPath:indexPath animated:YES scrollPosition:YES]; 
+0

謝謝,哇,這是令人沮喪的。這就是我過分依賴代碼暗示告訴我的原因。它從來沒有表示過。 > :-( – Liandri 2012-03-10 20:15:31