Можно ли программно показать красную кнопку удаления на UITableViewCell? - PullRequest
26 голосов
/ 14 марта 2011

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

Причина, по которой я спрашиваю, состоит в том, что я пытаюсь изменить поведение табличного представления, используя два UISwipeGestureRecognizer, таким образом:

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

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

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

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

Ответы [ 4 ]

4 голосов
/ 18 мая 2012

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

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

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

0 голосов
/ 03 сентября 2013
- (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
        }
    }
}
0 голосов
/ 27 февраля 2012

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

Из пользовательского интерфейса / UXПерспектива, переопределение функции по умолчанию или «ожидаемой» функциональности не очень хорошая идея.Пользователи имеют определенные ожидания относительно того, как будут работать различные приложения и функции, и когда они не работают таким образом, пользователи либо разочаровываются, либо смущаются.Отсюда распространение функциональности «тянуть-обновить» практически во всех приложениях, включающих табличное представление.Что может быть более разумным, так это иметь два пальца в качестве настраиваемой функции.Мало того, что ваше приложение будет тогда соответствовать традиционным правилам UX (на самом деле, я думаю, что Apple может отклонить ваше приложение в его нынешнем виде, и, возможно, поэтому вам так трудно найти ответ), но это потребует многоменьше борьбы / пользовательский код.

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

0 голосов
/ 14 марта 2011

Позвонив

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...