Выбор нескольких ячеек в табличном представлении

Я хочу загружать фотографии в twitter, facebook и twit pic и многие другие. Я взял это в массиве и отобразился в виде таблицы. Я использую shareKit. Я закодирован, как если бы я выбрал одну ячейку (например, Twitter), тогда она будет загружать фотографию в твиттер. Я хочу выбрать более одной ячейки и выполнить это действие отправки на одной кнопке (отправить выбранный элемент строки). Я могу отмечать/удалять ячейки, но как получить выбранное значение ячейки. Я не хочу, чтобы он находился в режиме редактирования таблицы.

Код:

-  (void) tableView:(UITableView *)atableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {


    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }


    else {

        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }



}

Ответ 1

Пусть sourceArray будет вашим массивом, который вы используете для заполнения таблицы. И selectedObjects - массив объектов, которые выбраны, инициализированы, чтобы содержать 0 объектов. Это должна быть переменная экземпляра класса (private).

//NSMutableArray *selectedObjects = [[NSMutableArray array] retain];

-  (void) tableView:(UITableView *)atableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    YouObjectType *object = [sourceArray objectAtIndex:indexPath.row]; //This assumes that your table has only one section and all cells are populated directly into that section from sourceArray.
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
        cell.accessoryType = UITableViewCellAccessoryNone;
        [selectedObjects removeObject:object];
    }
    else {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
        [selectedObjects addObject:object];
    }
}

Затем в методе отправки отправки описанной кнопки используйте объекты в массиве selectedObjects для выполнения требуемой операции.

Ответ 2

Вы также можете сделать это с помощью галочки в виде таблицы, например..

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)path {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:path];
 if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
cell.accessoryType = UITableViewCellAccessoryNone;
} else {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
}

Ответ 3

Вы можете управлять им в массиве, который выбирает ячейку или нет, когда вы выбираете строку, а затем в файле didSelectRowAtIndexPath обновляете этот массив в соответствии с указанным выше условием и используете этот массив при загрузке изображений. Например, у вас есть массив, у которого есть два словарных объекта для ключа @ "image" и @ "isSelected", и заполняет таблицу этим массивом, и когда вы выбираете строку, тогда обращайтесь к элементу из массива как к объекту словаря в indexPath.row и обновите словарь "true" или "flase" для клавиши "isSelected".

Ответ 4

Получите indexPath.row в файле didSelectRowAtIndexPath, вы можете узнать, какая ячейка выбрана.