В моем случае я реализовал все необходимые методы UITableViewDelegate, как упомянуто в документе Apple и в ответах здесь, но все еще не вижу элемента управления переупорядочением. В конце концов я обнаружил, что это потому, что я переопределил метод layoutSubviews, не вызывая реализацию супер по умолчанию. После того как я добавил [super layoutSubviews], наконец-то появился мой элемент управления переупорядочением.
Причина, по которой нам нужно вызывать [super layoutSubviews], заключается в том, что когда мы переключаем свойство редактирования таблицы, вызывается метод layoutSubviews ячейки, а предоставляемые системой элементы управления, такие как элемент управления переупорядочением, отображаются в методе layoutSubviews по умолчанию UITableViewCell. Как только вы это поймете, вы также можете изменить реализацию layoutSubviews, чтобы изменить внешний вид ячейки в зависимости от того, редактируется она или нет, чтобы сделать ее менее неуклюжей при появлении элемента управления переупорядочением.
Итак, вот контрольный список для переупорядочения строк:
- убедитесь, что реализованы методы делегата tableView: canMoveRowAtIndexPath и tableView: moveRowAtIndexPath: toIndexPath
- убедитесь, что свойство редактирования tableView установлено в YES
- Если у вас есть пользовательский UITableViewCell, обязательно позвоните
[super layoutSubviews] если вы переопределите этот метод