IPhone: как разрешить множественный выбор в tabelview для пользовательской ячейки?
Как я могу адаптировать это, чтобы иметь возможность делать несколько вариантов? и получить выбранные
- (id)initWithCellIdentifier:(NSString *)cellID {
if ((self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID])) {
UITableViewCell *cell=self;
UIImage *cry = [UIImage APP_CRYSTAL_SELECT];
self.leftImage = [[[UIImageView alloc] initWithImage:cry] autorelease] ;
[self.contentView addSubview:leftImage];
}
И выбранный метод:
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
if(selected)
{
NSArray *subviews=[self.contentView subviews];
for(UIView* view in subviews){
if([view isEqual:self.leftImage]){
[self.leftImage setHighlightedImage:[UIImage APP_CRYSTAL_SELECTED]];
}
}
}
else
{
NSArray *subviews=[self.contentView subviews];
for(UIView* view in subviews){
if([view isEqual:self.leftImage]){
[self.leftImage setHighlightedImage:[UIImage APP_CRYSTAL_SELECT]];
}
}
}
}
Ответы
Ответ 1
Для множественного выбора в этом случае установите NSMutableArray ivar (selectedIndexPaths) для хранения выбранных элементов. В didSelectRowAtIndexPath
добавить или удалить indexPaths в этот массив.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(![self.selectedIndexPaths containsObject:indexPath])
[self.selectedIndexPaths addObject:indexPath];
else
[self.selectedIndexPaths removeObject:indexPath];
}
Используйте selectIndexPaths позже, чтобы делать все, что пожелаете! Ура!
-Akshay