Динамически добавлять и удалять UITableViewCells в UITableView - PullRequest
3 голосов
/ 10 декабря 2010

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

Прямо сейчас у меня есть сгруппированный UITableView, и с правой стороны каждого UITableViewCell у меня есть UIButton, который добавляет другую ячейкутаблица с UITextField.После первой ячейки у каждой ячейки есть кнопка удаления.Я пытаюсь заставить UIButton удалить эту строку.У меня есть IBAction, который удаляет ячейку, единственная проблема в том, что он не удаляет нужную строку.

Каков наилучший способ сделать то, что я пытаюсь сделать?Я не знаю, как правильно искать это в Google.Я уверен, что кто-то сделал то, что я пытаюсь сделать.

Спасибо за любую помощь заранее!

Ответы [ 2 ]

7 голосов
/ 12 декабря 2010

Подобно тому, что Дерек сказал выше - UITableViewController уже предоставляет функциональность для удаления строк.

Чтобы переключить редактирование UITableView, сделайте что-то вроде: [self.tableView setEditing:!self.tableView.editing animated:YES];

Переопределите tableView:canEditRowAtIndexPath: чем-то вроде (так как кажется, что вы не хотите, чтобы ваш первый ряд можно было удалить):

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    if ([indexPath row] == 0) {
            return NO;
    }

    return YES;
}

Также переопределить tableView:commitEditingStyle:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        [self.dataArray removeObjectAtIndex:[indexPath row] - 1];

        // delete the row from the data source
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
    }   
}

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

2 голосов
/ 10 декабря 2010

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

Ваш комментарий об удалении неправильной вещи делаетМне кажется, у вас есть проблема с сопоставлением номеров строк с индексами ваших исходных данных.

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