4
我有一個UITableView
以及一些區域和行。iOS:將表格單元移動到另一個區域
我想從一個部分移動一行到另一個部分,當我調用一個函數(所以不是我的手指,我不想使用編輯模式UITableView
)。
我該怎麼做?
如果我重新創建一個數據源並重新加載表,它沒問題,但它不使用動畫。
我有一個UITableView
以及一些區域和行。iOS:將表格單元移動到另一個區域
我想從一個部分移動一行到另一個部分,當我調用一個函數(所以不是我的手指,我不想使用編輯模式UITableView
)。
我該怎麼做?
如果我重新創建一個數據源並重新加載表,它沒問題,但它不使用動畫。
UITableView
爲您提供方法如下:
呼叫beginUpdates
,更新您的數據源,打電話moveRowAtIndexPath最後調用endUpdates
上UITableView
[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:...];
我試過了,它在一個 部分。當我嘗試從第二部分移動到第一部分時,出現類錯誤:「無效的更新:部分中的行數無效......等等」。 當我在tableview數據源中更新我的數據時,重新加載源數組(不是tableview,只有數據!),然後使用你的提示。 我應該在哪裏使用此動畫?在重新加載數據之前或之後或之後?:) – mudlee 2011-12-30 15:38:12
如果您執行了更新(使用begin和endUpdate),您需要注意,您相應地更新數據源(在begin和endUpdates之間)。例如,如果將項目從第1部分移動到第2部分,則數據源必須返回第1部分有一個較少項目,第2部分有一個項目。 (如果這沒有幫助你:免費發佈一些你的代碼) – JeanLuc 2011-12-31 12:28:56
謝謝,它的工作:) – mudlee 2012-01-03 16:08:56