Изменение порядка (изменение положения) моделей данных на основе разделов и строк таблицы - PullRequest
0 голосов
/ 20 мая 2019

Допустим, у меня есть несколько разделов, которые являются днями недели, и несколько строк, в которых мои тренировки на день.

Таким образом, структура может быть следующей

Monday section 0
Workout 1 (row 0)
Workout 2 (row 1)

Tuesday section 1
Workout 1 (row 0)
Workout 2 (row 1)

Поэтому, когда я перемещаю ячейку между разделамиЯ хочу изменить положение своих элементов на тренировках в секциях.

В настоящее время у меня есть модель данных

class Workout {
var position: Int
}

Так что теперь, когда я перемещаю ячейку из одной секции в другую, мне нужно циклически перемещаться по моей [workouts] массивы для пересчета позиций в секции источника и в секции назначения.

Может быть, есть какое-то красивое решение, такое как List с первым и последним элементами, которое я могу просто повторно связать или любым другим.

Я вижу, что здесь нет Списка здесь

1 Ответ

1 голос
/ 20 мая 2019

Чтобы переупорядочить в tableView, вы можете просто использовать UITableViewDataSource методы.

Пример:

Мы будем использовать ниже array как tableView's dataSource:

var arr = [["First", "Second"], ["Third", "Fourth"]]

Чтобы изменить dataSource при переупорядочении ячеек, используйте метод tableView(_:moveRowAt:to:) и измените dataSource в соответствии с sourceIndexPath и destinationIndexPath.

func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
    let val = arr[sourceIndexPath.section][sourceIndexPath.row]
    arr[destinationIndexPath.section][destinationIndexPath.row] = val
    arr[sourceIndexPath.section].remove(at: sourceIndexPath.row)
}

Кроме того, как уже упоминалось, нет ничего похожего на List в Swift.Вы должны использовать Array, чтобы справиться с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...