2010-04-15 4 views
0

Я включил режим редактирования и перемещение ячеек, чтобы пользователи могли размещать содержимое табличного представления в удобном для них порядке. Я использую Core Data в качестве источника данных, который сортирует контент по атрибуту «userOrder». Когда содержимое сначала вставлено, userOrder устанавливается на случайное значение. Идея заключается в том, что, когда пользователь перемещает ячейку вокруг, пользовательский элемент этой ячейки меняет место размещения новой позиции. Ниже приведены проблемы, которые я бегу в то время, пытаясь достичь этого:Перемещение ячеек UITableView и поддержание согласованных данных

  1. Успешно спасая новое местоположение ячейки и настройки все измененные местоположения под влиянием клеток.

  2. Получение данных для обеспечения согласованности. Например, TableView обрабатывает штраф движения, но когда я нажимаю на новое местоположение ячейки, он отображает данные для старой ячейки, которая раньше была для этого местоположения. Данные всех влияющих клеток также перепутаны.

Я знаю, что я должен осуществить это в:

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {} 

Я просто не знаю, как. Яблочные документы не особенно полезны, если вы используете Core Data, как в моей ситуации.

Любое руководство очень ценится!

ответ

0

Задача 1 является в значительной степени зависит от использования CoreData, просто подумайте о простом массиве:

{0 1 2 3 4 A}. 

Теперь пользователь перемещает некоторые недавно добавленный элемент А в массиве:

{0 1 A 2 3 4} 

Так, начиная с вставленным элементом A, который получает индекс 2, все элементы должны иметь свой индекс (который является userOrder в вашем случае), увеличивающийся на единицу. Итак, вы сопоставляете 0-> 0, 1-> 1, A-> 2, 2-> 3, 3-> 4 и т. Д.

Проблема 2 может иметь два или три источника:

  1. Либо ваши ценности CoreData не синхронизированы, поэтому база данных не находится в синхронизации с тем, что вы видите.
  2. [таблица reloadData] была не называется
  3. Вашего шаг-алгоритмом является неправильным

Так что, возможно, вы можете проверить пункты тебя более и если не применяется ни вы могли бы рассмотреть возможность разместить свое перемещение-алгоритм для более детального изучения.

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