// todo работает и для java в андроид студии. Нет необходимости в капитализации.
Хорошо, это оказалось довольно просто. Вот что я сделал, чтобы решить эту проблему:
Objective-C
- (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Detemine if it's in editing mode
if (self.tableView.editing)
{
return UITableViewCellEditingStyleDelete;
}
return UITableViewCellEditingStyleNone;
}
Swift 2
override func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle {
if tableView.editing {
return .Delete
}
return .None
}
Swift 3
override func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
if tableView.isEditing {
return .delete
}
return .none
}
Вам все еще нужно реализовать tableView: commitEditingStyle: forRowAtIndexPath:
, чтобы зафиксировать удаление.
Обычно вы включаете или отключаете редактирование с помощью методов
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
. Если редактирование включено, появляется красный значок удаления и пользователю запрашивается подтверждение удаления. Если пользователь подтверждает, метод делегата
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
уведомляется о запросе на удаление. Если вы реализуете этот метод, то смахивание для удаления автоматически становится активным. Если вы не реализуете этот метод, смахивание для удаления неактивно, однако вы не можете удалить строку. Поэтому, насколько мне известно, вы не сможете добиться того, о чем просили, если не используете некоторые недокументированные частные API. Наверное, так реализовано приложение Apple.