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.