У меня есть UITableView
с возможностью удалять строки в режиме редактирования и т. Д. Как правило, когда вы нажимаете кнопку «Редактировать», вы переходите в режим редактирования, и содержимое ячеек перемещается в право. Если вы выполните «удаление пальцем», содержимое ячейки останется на месте.
Что я хочу сделать, так это увеличить отступ при входе в режим редактирования. Я пробовал UITableView
метод делегата indentationLevelForRowAtIndexPath
, но, похоже, он не работает, когда я использую UITableViewCell
подкласс.
В конце я использовал метод layoutSubviews в своем подклассе UITableViewCell. Ниже мой код:
- (void)layoutSubviews
{
[super layoutSubviews];
CGRect b = [self bounds];
if(self.editing && !self.showingDeleteConfirmation){
b.origin.x = 42;
}
[self.contentView setFrame:b];
}
Это отступает для содержимого ячейки далее, когда вы входите в режим редактирования, и благодаря «!self.showingDeleteConfirmation
», когда вы делаете «пролистывание для удаления», оно не отступает.
Однако, когда вы нажимаете кнопку «Редактировать», затем нажимаете одну из кнопок удаления круга, содержимое ячейки перемещается обратно в исходное положение оси 0 x. Это потому, что для showingDeleteConfirmation
теперь установлено значение true.
Я пытался это исправить, проверяя текущее значение origin.x
, но каждый раз, когда я проверяю, оно устанавливается на 0.
Есть ли способ, которым я могу достичь того, чего хочу?