Стандартный способ сделать это - использовать cell.hidesAccessoryWhenEditing = YES
, и это редактирование является модальным действием, при котором навигация обычно отключена.
Приложение «Контакты» на самом деле использует пользовательские ячейки таблицы, и я не удивлюсь, если оно использует не столько аксессуар, сколько изображение, расположенное на правом краю ячейки, судя по его поведению.
Если вы хотите знать, когда появляется кнопка удаления, я бы посоветовал вам попробовать установить наблюдатель Key-Value в свойстве showingDeleteConfirmation
ячейки, например:
[cell addObserver: self forKeyPath: @"showingDeleteConfirmation"
options: NSKeyValueObservingOptionNew context: NULL];
Затем вы реализуете метод обратного вызова наблюдателя:
- (void)observeValueForKeyPath: (NSString *) keyPath ofObject: (id) object
change: (NSDictionary *) change context: (void *) context
{
if ( [keyPath isEqualToString: @"showingDeleteConfirmation"] )
{
UITableViewCell * cell = (UITableViewCell *) object;
BOOL isShowing = [[change objectForKey: NSKeyValueChangeNewKey] boolValue];
if ( isShowing == NO )
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
else
cell.accessoryType = UITableViewCellAccessoryNone;
}
}
Следует отметить, что я не уверен, является ли класс UITableViewCell совместимым с KVO для этого свойства, но его стоит попробовать…