2009-09-14 4 views
0

Если я переупорядочу строки в представлении таблицы, можно ли сохранить результат, только если пользователь нажал кнопку «Готово»? (Reorder работает прекрасно, но я только хочу, чтобы совершить окончательный результат позиции, если пользователь нажал кнопку Готово, а не каждый раз, когда строка перемещается.)Как сохранить переупорядоченные строки только при нажатии кнопки «Готово»?

Есть ли что-то вроде editingStyle == UITableViewCellEditingCellMove в commitEditingStyle?

Или это возможно только в случае действия moveRowAtIndexPath?

Спасибо за помощь!

ответ

1

Вам нужно будет создать некоторую «редактирующую» версию вашей внутренней структуры данных, которую вы совершите, когда пользователь закончит редактирование. UITableView не отслеживает, где находятся ячейки; он полагается на вас, чтобы это сделать. Он просто говорит вам, когда пользователь просит переместить вещи. Если вы действительно не хотите переместить их в этот момент, вам нужно будет отслеживать, где они на самом деле, по сравнению с текущим порядком в TableView.

Помните, UITableViews намеренно немые. Они не отслеживают данные. Они просто рисуют вещи. Вы отслеживаете данные (как источник данных) и говорите им, что рисовать, когда они спрашивают.

Обычно я рекомендую разработчикам разделить свои фактические данные на отдельный класс модели и поддерживать UITableView в отдельности NSMutableArray на основе этого класса модели. В этом случае во время редактирования вы должны обновить массив UITableView, а когда закончите редактирование, он отправит этот массив в модель для обновления «реальных» данных.

+0

Эй, спасибо за ваш ответ. Я фактически храню свои данные в массиве. Мой вопрос - это больше о том, где сохранить, если это делается. На данный момент я прохожу через свой массив данных на moveRowAtIndexPath и сохраняю позиции в моей базе данных. Но этот цикл называется каждый раз, когда я его прибегаю. Поэтому я считаю, что это лучше для производительности, если «действие» сохранения происходит в действии commitEditingStyle, таком как «Удалить». – phx

+1

Просто сделайте свою базу данных в setEditing: animated :. –

Смежные вопросы