Подкласс UITableViewCell и перемещайте неотредактированную строку самостоятельно.
@interface MyHistoryTableViewCell : UITableViewCell
@end
@implementation MyHistoryTableViewCell : UITableViewCell
#define CELL_SLIDE_WIDTH 32 // found empirically
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing:editing animated:animated];
if (self.editingStyle == UITableViewCellEditingStyleNone) { // not editable
CGRect frame = self.frame;
UITableView *tableView = ((UITableView *)(self.superview));
if (tableView.editing) { // going to editing mode
frame.origin.x = CELL_SLIDE_WIDTH;
frame.size.width = tableView.frame.size.width - CELL_SLIDE_WIDTH;
} else { // ending editing
frame.origin.x = 0;
frame.size.width = tableView.frame.size.width;
}
[UIView animateWithDuration:0.3 animations:^{ // match the tableView slide duration
self.frame = frame;
}];
}
}
@end
Если у вас есть подвидами, которые должны быть закреплены в правой части ячейки (например, кнопка, которая не должна скользить), а затем сделать
mySubview.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin; // anchors to the right margin
Кроме того, вы должны быть творческими, когда установив frame.origin.x в subview. Я экспериментировал со многими значениями, пока не нашел что-то, что сработало (значение для меня не имело смысла).
Вы используете пользовательские ячейки или просто настраиваете встроенный? – dasblinkenlight