2011-12-30 97 views
4

我有一個UITableView以及一些區域和行。iOS:將表格單元移動到另一個區域

我想從一個部分移動一行到另一個部分,當我調用一個函數(所以不是我的手指,我不想使用編輯模式UITableView)。

我該怎麼做?

如果我重新創建一個數據源並重新加載表,它沒問題,但它不使用動畫。

回答

2

UITableView爲您提供方法如下:

呼叫beginUpdates,更新您的數據源,打電話moveRowAtIndexPath最後調用endUpdatesUITableView

[tableView beginUpdates]; 

// update your datasource 
// ... 

// fill in your indexpath of old and new position 
[tableView moveRowAtIndexPath: ... toIndexPath: ...]; 
[tableView endUpdates]; 

編輯:moveRowAtIndexPath僅適用於iOS 5以上 所以你會寧願用這個:

[tableView insertRowsAtIndexPaths: ... withRowAnimation:...]; 
[tableView deleteRowsAtIndexPaths: ... withRowAnimation:...]; 
+0

我試過了,它在一個 部分。當我嘗試從第二部分移動到第一部分時,出現類錯誤:「無效的更新:部分中的行數無效......等等」。 當我在tableview數據源中更新我的數據時,重新加載源數組(不是tableview,只有數據!),然後使用你的提示。 我應該在哪裏使用此動畫?在重新加載數據之前或之後或之後?:) – mudlee 2011-12-30 15:38:12

+0

如果您執行了更新(使用begin和endUpdate),您需要注意,您相應地更新數據源(在begin和endUpdates之間)。例如,如果將項目從第1部分移動到第2部分,則數據源必須返回第1部分有一個較少項目,第2部分有一個項目。 (如果這沒有幫助你:免費發佈一些你的代碼) – JeanLuc 2011-12-31 12:28:56

+0

謝謝,它的工作:) – mudlee 2012-01-03 16:08:56

相關問題