Это поздний ответ, но я надеюсь, что кто-то может найти это полезным. Таким образом, принятый ответ кажется мне довольно сложным, и ответ @ user1684899 работает, только если вы просто хотите изменить внешний вид кнопки удаления. Я хочу полностью изменить внешний вид кнопки удаления (т. Е. Ее рамку, положение и т. Д.), Поэтому мое решение состоит в том, чтобы добавить собственную кнопку удаления в свою пользовательскую ячейку и оставить ее изначально скрытой, и показывать ее только тогда, когда ячейка в режиме редактирования. Что еще более важно, я хочу скрыть оригинальную кнопку удаления iOS и поддерживать обратную совместимость, и вот мой трюк:
- (void)willTransitionToState:(UITableViewCellStateMask)state
{
[super willTransitionToState:state];
if ((state & UITableViewCellStateShowingDeleteConfirmationMask) == UITableViewCellStateShowingDeleteConfirmationMask)
{
if (!IS_IOS_7){
for (UIView *subview in self.subviews)
{
if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationControl"])
{
// hide original button
[[subview.subviews objectAtIndex:0] setHidden:YES];
// show my custom button
[self.deleteButton setHidden:NO];
}
}
} else {
for (UIView *subview in self.subviews) {
for (UIView *subview2 in subview.subviews) {
if ([NSStringFromClass([subview2 class]) rangeOfString:@"Delete"].location != NSNotFound) {
// hide original button
[subview2 setHidden:YES];
// show my custom button
[self.deleteButton setHidden:NO];
}
}
}
}
} else {
// hide my custom button otherwise
[self.deleteButton setHidden:YES];
}
}
И не забудьте добавить:
[cell.deleteButton addTarget:self action:@selector(deleteEntryAtIndexPath:) forControlEvents:UIControlEventTouchUpInside];
в cellForRowAtIndexPath
, так что вы можете добавить любую вещь, которую захотите, когда нажмете кнопку удаления. Вот мой результат: