Добавить «Проведите, чтобы удалить», но не во всех ячейках - PullRequest
1 голос
/ 03 августа 2011

Я хочу добавить в свой просмотр таблицы возможность «провести пальцем, чтобы удалить», но я не хочу, чтобы это было для последней ячейки таблицы!

Я могу проверить - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath, является ли indexPath.row последним, но я хочу, чтобы, если пользователь проведет пальцем по последней ячейке, ничего не появится (в то время как в других ячейках появляется текст «удалить») ).

Я пробовал это

-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.row != ([array count]-1)) {
   return @"delete";
 }
 else {
     NSString *a;
     return a;
  }
}

но, конечно, это не работает (приложение вылетает). Я пробовал с

return @"";

но появляется красная кнопка (без текста)!

Что вы мне предлагаете? Спасибо!

Ответы [ 2 ]

3 голосов
/ 03 августа 2011

Приложение аварийно завершает работу, поскольку вы возвращаете неинициализированный указатель. Но даже тогда вы делаете это неправильно; -)

Вы хотите реализовать tableView: editStyleForRowAtIndexPath: и вернуть UITableViewCellEditingStyleDelete для всех ячеек, кроме последней. Вам нужно вернуть UITableViewCellEditingStyleNone для последней ячейки, чтобы предотвратить ее удаление.

3 голосов
/ 03 августа 2011

Попробуйте

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([indexPath row] == [tableView numberOfRowsInSection:[indexPath section]] - 1)
    {
        return UITableViewCellEditingStyleNone;
    }

    return UITableViewCellEditingStyleDelete;
}
...