2015-07-20 3 views
0

У меня есть UITableViewController, отображающий данные динамической таблицы с дополнительной строкой в ​​конце (с использованием отдельного прототипа ячейки), содержащей кнопку «Добавить».Предотвратить moveRowAtIndexPath за фиксированный индекс

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

Я реализовал:

override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { 

    return indexPath.row != elements.count 

} 

Чтобы запретить пользователям двигающих 'Добавить' строку таблицы

и я также тестирование на

if(toIndexPath.row < library.regularTasks.count) 

внутри

override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) 

который предотвращает e строк с заменой в модели.

Однако я не могу видеть способ предотвратить строки тащат за пределами последней строки в пользовательском интерфейсе

ответ

2

Нашли!

я использовал:

override func tableView(tableView: UITableView, targetIndexPathForMoveFromRowAtIndexPath sourceIndexPath: NSIndexPath, toProposedIndexPath proposedDestinationIndexPath: NSIndexPath) -> NSIndexPath { 
// Test whether destination is allowed  
if(proposedDestinationIndexPath.row < elements.count){ 
     return proposedDestinationIndexPath // if allowed move to proposed destination 
    }else{ 
     return sourceIndexPath // if not, send back to where it came from! 
    } 
} 
Смежные вопросы