У меня есть tableView, в котором есть кнопка, чтобы перевести ее в режим псевдоредактирования. В этом режиме эти ячейки «сдвигаются вправо / влево» для отображения флажка с левой стороны. Этот процесс не отличается от того, как работает кнопка «Изменить» в почтовом приложении.
Теперь я делаю это, устанавливая флаг pseudoEditing, а затем перезагружая таблицу, и если флаг установлен, то ячейка рисуется по-другому. Я также поместил это в блок анимации, который дает мне эффект смещения:
[UIView beginAnimations:@"cell shift" context:nil];
[UIView setAnimationDuration:kEventActionViewAnimationDuration];
cell.eventName.frame = (self.pseudoEditing) ? kPseudoEditingFirstIndentedRect : kFirstLabelRect;
cell.eventLocationName.frame = (self.pseudoEditing) ? kPseudoEditingSecondIndentedRect : kSecondaryLabelRect;
cell.eventStartDate.frame = (self.pseudoEditing) ? kPseudoEditingThirdIndentedRect : kThirdLabelRect;
cell.eventStartEndTime.frame = (self.pseudoEditing) ? kPseudoEditingFourthIndentedRect : kFourthLabelRect;
cell.imageView.frame = (self.pseudoEditing) ? kImageViewIndentedRect : kImageViewRect;
cell.rsvpImageView.hidden = !self.pseudoEditing;
[UIView commitAnimations];
return cell;
Моя проблема, однако, заключается в том, что мне нужно перезагрузить таблицу, чтобы вызвать cellForRowAtIndexPath: метод для обновления ячеек, который, в свою очередь, сбрасывает позицию таблицы в верхнюю часть tableView. Я мог бы затем установить позицию таблицы в положение, в котором она находилась до нажатия кнопки редактирования, используя что-то вроде scrollToIndexPath: ... Это, однако, не сработает, поскольку таблица будет прокручиваться вверх, а затем обратно в предыдущую ячейку. чего я не хочу.
Так есть ли способ перезагрузить tableCells в tableView без положения прокрутки изменения tableView, аналогично тому, как это делает приложение Mail?
Thx