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

Можно ли программно показать красную кнопку удаления на UITableViewCell?

Здесь есть много похожих вопросов, но никто из них, я думаю, специально не задал этот вопрос, а именно, есть ли какой-либо способ в коде, чтобы красная кнопка удаления отображалась справа от строки UITableView?

Я прошу, что я пытаюсь изменить поведение табличного представления с помощью двух UISwipeGestureRecognizers, чтобы:

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

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

Я просмотрел документы SDK, но я не могу найти способ вызвать появление этой красной кнопки, что заставляет меня думать, что предлагаемая схема пользовательского интерфейса выше невозможно реализовать без ручного создания красной кнопки удаления с нуля и пытаясь заставить его эмулировать встроенное одно поведение.

Любая помощь очень ценится.

4b9b3361

Ответ 1

В методе выбора жестов doubleFingerSwipe задается одна переменная и присваивается как нет строки прокрутки и перезагрузки таблицы. В

- (UITableViewCellEditingStyle) tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.row == yourVariable) return UITableViewCellEditingStyleDelete;
    else return UITableViewCellEditingStyleNone;
}

Я думаю, что это работает для проблемы с ур.

Ответ 2

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *CellIdentifier = [NSString stringWithFormat:@"cell %d",indexPath.row];

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        if(TableMethod==1)
        {
            UIButton *delete_btn=[UIButton buttonWithType:UIButtonTypeCustom];
            [delete_btn setFrame:CGRectMake(10,15,25,25)];
            delete_btn.tag=indexPath.row;
            [delete_btn setImage:[UIImage imageNamed:@"remove_Icone.png"] forState:UIControlStateNormal];
            [delete_btn addTarget:self action:@selector(delete_btn:) forControlEvents:UIControlEventTouchUpInside];
            [cell addSubview:delete_btn];
        }
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }

    // Configure the cell.
    return cell;
}


- (IBAction)delete_btn:(id)sender
{
    UIButton *buttontag = (UIButton *)sender;
    //NSLog(@"%d",buttontag.tag);
    Delete_row = buttontag.tag;

    UIAlertView *Alert = [[UIAlertView alloc]initWithTitle:@"Delete Reservation"   message:@"Are you sure to want Delete Reservation ??" delegate:self cancelButtonTitle:@"Delete" otherButtonTitles:@"Cancel",nil];
    Alert.tag=1;
    [Alert show];
    [Alert release];
}

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{
    if(alertView.tag==1)
    {
        if(buttonIndex == 0)
        {
            // delete row
        }
    }
}

Ответ 3

Это не ответ на ваш вопрос, а предложение о функциональности (я не могу оставлять комментарии, но я все равно хотел бы предложить свои два цента).

С точки зрения UI/UX переопределение функциональности по умолчанию или "ожидаемой" не является отличной идеей. У пользователей есть определенные надежды на то, как будут работать различные приложения и функции, и когда они не будут работать таким образом, пользователи либо расстраиваются, либо путаются. Следовательно, распространение функциональности pull-to-refresh почти в каждом приложении, которое включает в себя представление таблицы. Что было бы более разумным, так это то, чтобы иметь два пальца - это настраиваемая функциональность. Мало того, что ваше приложение будет соответствовать традиционным правилам UX (на самом деле, я думаю, Apple может отклонить ваше приложение в его нынешнем виде, и, вероятно, именно поэтому вам сложно найти ответ), но это будет связано с большим количеством меньше борьбы/пользовательский код.

Так жаль, что это был не прямой ответ на ваш вопрос, но я надеюсь, что это поможет.

Ответ 4

Вызывая

[self.tableView setEditing:YES animated:YES];

на UITableViewController вы можете настроить режим tableView в режиме редактирования. вы можете фактически добавить распознаватель жестов в ячейку, вид ячейки, который делает этот вызов, используя метод делегата.

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

Надеюсь, это поможет.