2013-06-17 6 views
1

У меня есть нечетное, но только слегка раздражающее поведение с UITableView, которое не находится внутри UITableViewController. Это очень просто, и все это связано с минимальными требуемыми методами. В IB он установлен, чтобы одиночный выбор, выбор шоу на ощупь и т.д. Следующая последовательность действий позволяет «выделения» любое количество строк:UITableView и проведите по экрану, чтобы выделить несколько строк.

  • Выберите строку.
  • Проведите по любой строке.
  • Щелкните в любом месте, чтобы отклонить действие удаления.
  • Выберите строку, отличную от первой.

Теперь у вас будет выделено две строки, этот процесс можно повторить до тех пор, пока все не будут выбраны.

Почему это возможно/что я пропустил? После отклонения опции удаления не вызывается didDeselectRowAtIndexPath. :/

+0

только для того, чтобы убедиться, что разрешеноМногоместный выбор НЕТ в UITableView, не так ли? –

+0

Да, но это не имеет никакого значения. Я хотел бы знать, что удалять, удалять делает внутренне, некоторое время я буду копать его, например. независимо от того, переходит ли вся таблица в режим редактирования и т. д. – Diziet

ответ

0

ОК быстро прочитайте всю документацию, которая привела меня к ответу. Хотя прокрутка для удаления не отображает мои строки заметно (из-за кода в tableView:didSelectRowAtIndexPath:, применяя выделение, которое я хочу, и код в tableView:didDeselectRowAtIndexPath: удаляет его), он удаляет его из выбранной строки, назначая nil indexPathForSelectedRow. Это связано с тем, что, как отмечено в документах, эти вызовы не отправляются, когда таблица находится в режиме редактирования, и я могу предположить, что вся таблица во время удаления удаляется. Видя, как строка фактически отменяется все, что мне нужно сделать, это удалить мою пользовательскую изюминку, так что я сделал это:

- (void)tableView:(UITableView *)tableView 
     willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath { 

    NSIndexPath *selectedIndex = self.cardsTable.indexPathForSelectedRow; 
    if (selectedIndex != nil) { 
     [self tableView:self.cardsTable didDeselectRowAtIndexPath:selectedIndex]; 
    } 
} 

Так что я думаю, что моя настраиваемая таблица изюминка немного хака.

Смежные вопросы