2009-09-14 44 views
0

如果我重新排列我的表視圖上的行,是否有可能保存結果只有當用戶按下「完成」按鈕? (重新排序是偉大的工作,但我只希望提交的位置的最終結果,當用戶按下完成按鈕,而不是每一個行移動時)。如何僅在按下完成按鈕時保存重新排序的行?

是否有類似editingStyle == UITableViewCellEditingCellMove commitEditingStyle?

或者這是唯一可能的moveRowAtIndexPath操作?

感謝您的幫助!

回答

1

您需要創建用戶完成編輯時所提交的內部數據結構的某些「編輯」版本。 UITableView沒有跟蹤細胞的位置;它依靠你來做到這一點。它只是告訴你什麼時候用戶要求移動東西。如果您不想在這一點上移動它們,那麼您需要跟蹤它們的真實位置與TableView中的當前順序。

請記住,UITableViews是故意啞。他們沒有跟蹤數據。他們只是畫東西。你跟蹤數據(作爲數據源),並告訴他們在提問時要畫什麼。

我通常建議開發人員將他們的實際數據分成單獨的模型類,並且UITableView根據該模型類保持單獨的NSMutableArray。在這種情況下,在編輯過程中,您需要更新UITableView的數組,並在完成編輯時將數組發送到模型以更新「真實」數據。

+0

嘿,謝謝你的回覆。我實際上將數據保存在一個數組中。我的問題是更多的關於如何完成度假勝地的節省。 目前我通過moveRowAtIndexPath上的數據數組遍歷並將位置存儲到我的數據庫。 但是這個循環在我每次使用時都被調用。所以我認爲它更好的性能,如果保存「行動」發生在像刪除commitEditingStyle行動。 – phx 2009-09-14 15:42:48

+1

只需將你的數據庫保存在setEditing:animated :. – 2009-09-14 22:01:43