uicollectionviewdatasource uicollectionviewcontroller tutorial example collection iphone ios uicollectionview

iphone - tutorial - uicollectionviewcontroller



Agregar celdas seleccionadas de diferentes secciones en diferentes matrices, UICollectionView (1)

Use un diccionario para almacenar los detalles. el número de sección se convierte en las teclas y almacena una matriz de elementos seleccionados correspondientes a cada tecla

Aquí está el esquema

NSDictionary Key:section0 value: array of selected items in section0 Key:section1 value: array of selected items in section1

Código

//Create a dictionary first NSMutableDictionary *selectedItemsInfo = [NSMutableDictionary new]; // During selection NSMutableArray *sectionInfo = [selectedItemsInfo objectForKey:indexPath.section]; if (sectionInfo == nil) { NSMutableArray *array = [NSMutableArray array] [array addObject: ] // add selected item [selectedItemsInfo setObject:array forKey:indexPath.section]; } else { [sectionInfo addObject: ] // add selected item }

Editar ( código de identificación de la discusión )

// Follow the below pattern NSMutableArray *sectionInfo = [selectedItemsInfo objectForKey: [NSNumber numberWithInt:indexPath.section]]; if (sectionInfo == nil) { NSMutableArray *array = [NSMutableArray array]; [array addObject: indexPath]; // add selected item [selectedItemsInfo setObject:array forKey:[NSNumber numberWithInt:indexPath.section]]; } else { // check the count if([sectionInfo count] < cs) { [sectionInfo addObject: indexPath]; // add selected item } else { // No need to add the item. Deselect the cell } } // To remove an item sectionInfo = [selectedItemsInfo objectForKey: [NSNumber numberWithInt:indexPath.section]]; [sectionInfo removeObject:indexPath]

Quiero agregar celdas seleccionadas de UICollectionView en matrices, en secciones en diferentes matrices, significa diferentes matrices para cada sección. El problema es que el número de secciones es dinámico. A continuación está mi código.

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { NSString *seatV; int cs; NSString *secVal = [arrSeatSel objectAtIndex:indexPath.section]; NSArray *arrSplit = [secVal componentsSeparatedByString:@":"]; seatV = [arrSplit objectAtIndex:1]; cs = [seatV integerValue]; int v; NSString *cnt = [NSString stringWithFormat:@"%@",[arrTot objectAtIndex:indexPath.section]]; v = [cnt intValue]; NSString *sect = [NSString stringWithFormat:@"%d", indexPath.section]; if(indexPath.item < v) { if([sectionInfo count] < cs) { itemPaths = [self.collectionView indexPathsForSelectedItems]; sectionInfo = [NSMutableArray arrayWithArray: [self.collectionView indexPathsForSelectedItems]]; [selectedItemsInfo setObject:sectionInfo forKey:sect]; cell=[self.collectionView cellForItemAtIndexPath:indexPath]; cell.contentView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"yellow_seat.png"]]; } else { [self.collectionView deselectItemAtIndexPath:[NSIndexPath indexPathForItem:indexPath.row inSection:indexPath.section] animated:YES]; [sectionInfo removeAllObjects]; } [self.collectionView deselectItemAtIndexPath:[NSIndexPath indexPathForItem:indexPath.row inSection:indexPath.section] animated:YES]; } NSLog(@"section array:%@", sectionInfo); NSLog(@"section array1:%@", sectionInfo1); NSLog(@"selected seats dict:%@", selectedItemsInfo); }

La matriz arrSeatSel está obteniendo el número de secciones y el número de asientos que se pueden elegir de cada sección.

description of arr seatsel:( "Family:2", "Gold:3" )

Aquí las secciones son 2 y las celdas que se pueden seleccionar son 2. De forma similar para otras secciones y en todos los casos.

arrTot obtiene la cantidad total de celdas en cada sección

description of arrTot( 10, 10 )

array arrLevels es el número de secciones. y array itemPaths está agregando las celdas seleccionadas, y aquí el problema es, cualquiera que sea la sección que está agregando celdas seleccionadas, pero cada sección tiene su propio límite de selección de celdas. Espero que tengas mi punto, si algo claro preguntar libremente. En resumen, te cuento lo que está sucediendo aquí, hay un mapa de asientos para diferentes niveles nivel 1, 2, etc. y para cada nivel puedes seleccionar asientos limitados, luego se requieren esos asientos seleccionados para diferentes niveles para agregar en diferentes arreglos.