iphone SDK: Как использовать галочку для удаления строки проверено? - PullRequest
1 голос
/ 20 сентября 2010

Я знаю только первый шаг - проверить строку. Далее я думаю использовать NSMutableArray, чтобы записать, какая строка была проверена, и это мой код:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
        if ([[tableView cellForRowAtIndexPath:indexPath] accessoryType] == UITableViewCellAccessoryCheckmark){

                [[tableView cellForRowAtIndexPath:indexPath] setAccessoryType:UITableViewCellAccessoryNone];
            }

            else {

                [[tableView cellForRowAtIndexPath:indexPath] setAccessoryType:UITableViewCellAccessoryCheckmark];

        }
    }

Итак, мой вопрос:

  1. Как поместить indexPath этой проверенной строки в массив?

  2. Как добавить кнопку удаления, чтобы я мог удалить все выбранные строки?

Ответы [ 2 ]

2 голосов
/ 20 сентября 2010

Сначала объявите NSMutableArray в файле .h вашего viewController.

Вроде так:

NSMutableArray *checkedRows;

Измените свой метод didSelectRow следующим образом:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if ([checkedRows containsObject:indexPath]) {
        [checkedRows removeObject:indexPath];
    }
    else {
        [checkedRows addObject:indexpath];
    }
    [self.tableView beginUpdates]; //Just for animation..
    [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    [self.tableView endUpdates];
}

И в вашем методе cellForRow добавьте:

if ([checkedRows containsObject:indexPath]){
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else {
    cell.accessoryType = UITableViewCellAccessoryNone;
}
1 голос
/ 20 сентября 2010

Вы идете об этом неправильно.

Вы не обрабатываете вспомогательные виды редактирования самостоятельно.Вместо этого вы отправляете setEditing:animated: на стол, и он меняет ячейки для вас.Затем вам нужно реализовать:

– tableView:commitEditingStyle:forRowAtIndexPath: 
– tableView:canEditRowAtIndexPath:

... для фактического удаления ячеек строки.

...