2010-06-14 71 views
1

我有一個tableView與多個部分。當部分僅包含一個行,如果我嘗試刪除該行,我的應用程序崩潰時執行此代碼:UITableView與多個部分:部分與1行,刪除行崩潰應用程序

[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES]; 

我得到這個異常:

*** Terminating app due to uncaught exception 'NSRangeException', 
reason: '*** -[NSCFArray objectAtIndex:]: index (0) beyond bounds (0)' 

有一個數組,每個部分。這些數組中的每一個都包含要在行中顯示的對象。然後是另一個包含這些數組的數組。

任何想法我做錯了什麼? 謝謝。

編輯:

OK,我在它的tableView: titleForHeaderInSection方法這是崩潰調試剛纔看到的,因爲我得到了部分的標題我剛剛刪除的陣列中。所以我試圖訪問一個有0個對象的數組...

回答

0

表視圖有一個源,源包含顯示的部分和行的列表。當您執行[tableView deleteRowsAtIndexPaths:withRowAnimation:]調用時,表格視圖會更新表格,但源代碼現在不同步(它具有剛剛刪除的行)。解決方案是在更新表視圖本身之前更新源(即數組或核心數據或其他)。

0

最簡單的解釋是indexPath是零,它導致一個空數組傳遞給delete方法。

記錄indexPath的值以確認。

+0

對於:\t \t 的printf( 「部分:%d,行:%d \ n」 個,indexPath.section,indexPath.row); 這裏是日誌: 部分:1,行:0 因此,沒有indexPath不是零... – leochab 2010-06-15 06:42:40

+0

可能不得不到別的地方看看代碼即可。我沒有看到你現在發佈的內容存在問題。 – TechZen 2010-06-15 20:02:27

0

當你只有一行的部分,你應該刪除該部分。這裏是下面的代碼刪除部分。 [self.tableView deleteSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationTop];

相關問題