iPhone UITableViewController перемещает только определенные строки в таблице - PullRequest
4 голосов
/ 23 октября 2010

Я внедрил стандарт UITableViewController. Я сделал только несколько строк в таблице, чтобы быть подвижным, т.е. canMoveRowAtIndexPath возвращает true только для некоторых indexPaths (для строк в первой части таблицы). Я хотел бы разрешить обмен только тех строк, которые являются подвижными, т.е. для которого canMoveRowAtIndexPath возвращает истину.

Например. мой стол выглядит так:

Row 1
Row 2
Row 3
Row 4
Row 5

Ряды 1, 2, 3 являются подвижными. Поэтому я хочу реализовать следующее поведение: строка 1 может быть заменена только на строки 2 или 3. Аналогично строка 2 может быть заменена только на строки 1 и 3. Это один из возможных макетов:

Row 3
Row 1
Row 2
Row 4
Row 5

Однако я не хочу, чтобы это произошло:

Row 3
Row 5
Row 2
Row 4
Row 1

Как этого добиться?

Ответы [ 2 ]

4 голосов
/ 23 октября 2010

Имейте в виду, что на самом деле он двигается только на один ряд, а не , обмениваясь .

То, что вы хотите, это реализовать tableView:targetIndexPathForMoveFromRowAtIndexPath:toProposedIndexPath

См. Как ограничить переупорядочение строк в UITableView секцией

0 голосов
/ 27 июля 2014

Вы можете управлять перемещением внутри секции и между секциями.

- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath

{

// Do not allow any movement between section
if ( sourceIndexPath.section != proposedDestinationIndexPath.section)
    return sourceIndexPath;
// You can even control the movement of specific row within a section. e.g last row in a     Section

// Check if we have selected the last row in section
if (   sourceIndexPath.row < sourceIndexPath.length) {
    return proposedDestinationIndexPath;
} else {
    return sourceIndexPath;
}

// Вы можете использовать этот подход или логику для проверки индекса строк враздел и вернуть либо sourceIndexPath, либо targetIndexPath

}

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