Вам нужно будет реализовать метод UITableViewDelegate
targetIndexPathForMoveFromRowAt
.
Ваша стратегия будет состоять в том, чтобы разрешить перемещение, если источник и пункт назначения section
совпадают. Если это не так, вы можете вернуть либо строку 0, если предложенный раздел назначения меньше, чем исходный раздел, либо последнюю строку раздела, если предлагаемый раздел назначения больше, чем исходный раздел.
Это ограничит перемещение в исходную секцию.
override func tableview(_ tableView: UITableView, targetIndexPathForMoveFromRowAt sourceIndexPath: IndexPath, toProposedIndexPath proposedDestinationIndexPath: IndexPath) -> IndexPath {
let sourceSection = sourceIndexPath.section
let destSection = proposedDestinationIndexPath.section
if destSection < sourceSection {
return IndexPath(row: 0, section: sourceSection)
} else if destSection > sourceSection {
return IndexPath(row: self.tableView(tableView, numberOfRowsInSection:sourceSection)-1, section: sourceSection)
}
return proposedDestinationIndexPath
}