Выбор нескольких ячеек в табличном представлении
Я хочу загружать фотографии в 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, вы можете узнать, какая ячейка выбрана.
Ответ 5
Вы можете использовать этот github repo JLSelectionTVC (https://github.com/nvrtdfrst/JLSelectionTVC), который выполняет этот