簡體   English   中英

UITableView具有多個部分:具有1行的部分,刪除該行會使應用崩潰

[英]UITableView with multiple sections : section with 1 row, deleting the row crashes the app

我有一個tableView有多個部分。 當一個部分僅包含一行時,如果我嘗試刪除該行,則在執行以下代碼時,我的應用程序將崩潰:

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

我得到這個例外:

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

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

有什么想法我做錯了嗎? 謝謝。

編輯:

好的,我只是在調試器中看到是tableView: titleForHeaderInSection方法崩潰了,因為我在剛刪除的數組中獲取了該節的標題。因此,我試圖訪問其中包含0個對象的數組...

最簡單的解釋是indexPath為nil,這導致將空數組傳遞給delete方法。

記錄indexPath的值以確認。

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

如果某節中只有一行,則應刪除該節。以下代碼刪除該節。 [self.tableView deleteSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationTop];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM