Подтвердить что ты не робот

Как определить жестов для удаления удаленных файлов в настраиваемом UITableviewCell?

Я настроил UITableViewCell, и я хочу реализовать "салфетки для удаления". Но я не хочу кнопку удаления по умолчанию. Вместо этого я хочу сделать что-то другое. Что было бы самым простым способом реализовать это? Существуют ли какие-то методы, которые вызываются при попытке пользователя удалить ячейку? Могу ли я предотвратить появление кнопки удаления по умолчанию?

Сейчас я думаю, что я должен реализовать свою собственную логику, чтобы избежать кнопки удаления по умолчанию и сжимать анимации, которые происходят при удалении, чтобы удалить в реализации UITableViewCell по умолчанию.

Возможно, мне нужно использовать UIGestureRecognizer?

4b9b3361

Ответ 1

Если вы хотите сделать что-то совершенно другое, добавьте UISwipeGestureRecognizer в каждую ячейку таблицы.

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    // Configure the cell.


    UISwipeGestureRecognizer* sgr = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(cellSwiped:)];
    [sgr setDirection:UISwipeGestureRecognizerDirectionRight];
    [cell addGestureRecognizer:sgr];
    [sgr release];

    cell.textLabel.text = [NSString stringWithFormat:@"Cell %d", indexPath.row];
    // ...
    return cell;
}

- (void)cellSwiped:(UIGestureRecognizer *)gestureRecognizer {
    if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
        UITableViewCell *cell = (UITableViewCell *)gestureRecognizer.view;
        NSIndexPath* indexPath = [self.tableView indexPathForCell:cell];
        //..
    }
}

Ответ 2

Вот два метода, которые можно использовать, чтобы избежать кнопки "Удалить":

- (void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath

и

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath