2012-05-28 16 views
9

quiero usar matriz bidimensional en ios, por ejemplo, quiero preparar una matriz para tableview fuente de datos,matriz bidimensional en ios

UITableViewCell array[sections][rows];

Algo como esto, y aquí no puedo predeclarar el tamaño además.

Gracias

+0

de verificación [esto] (http://stackoverflow.com/a/4982636/845115) –

+1

Un pequeño consejo ... te recomendaría que no almacenar manualmente sus TableCells en matrices, ya que las células pueden ser reutilizadas por UITableView para un mejor manejo y rendimiento de la memoria, utilizando el método dequeueReusableCellWithIdentifier. Debe conservar la representación de los datos que desea mostrar en listas, matrices o lo que quiera, y luego vincular los datos a sus celdas en el método cellForRowAtIndexPath. –

Respuesta

24
NSMutableArray *dataArray = [[NSMutableArray alloc] initWithCapacity: 3]; 

[dataArray insertObject:[NSMutableArray arrayWithObjects:@"0",@"0",@"0",nil] atIndex:0]; 
[dataArray insertObject:[NSMutableArray arrayWithObjects:@"0",@"0",@"0",nil] atIndex:1]; 
[dataArray insertObject:[NSMutableArray arrayWithObjects:@"0",@"0",@"0",nil] atIndex:2]; 

y así es como se selecciona el valor de la matriz

NSMutableArray *subArray = [dataArray objectAtIndex:2]; 
NSLog(@"data : %@",[subArray objectAtIndex:0]); 
2

establecer un NSDictionary y utilizar un NSIndexPath como la clave para cada celda

+1

¿No sería muy confuso si la lista de la vista de tabla cambiara, es decir, si un elemento se eliminó de la lista? Entonces necesitarías cambiar las llaves para todos los artículos siguientes en la lista ... –

+0

@jake_hetfield absolutamente. solo sería útil para las fuentes de datos estáticas. pero el almacenamiento de las celdas en una matriz me parece un desperdicio de esfuerzo – wattson12

1

enfoque de azúcar sintáctica . Tenga en cuenta que este enfoque no creará automáticamente un NSMutableArray de un tamaño determinado. El tamaño inicial del array será 0, 0.

NSMutableArray *yourArray = [@[ [@[] mutableCopy]] mutableCopy]; 

// add an object to the end of your array 
[yourArray[section][row] addObject:@(22)]; 

// set/change an NSNumber object at a particular location in the 2D array. 
yourArray[section][row] = @(22); 

// Retrieve a value, converting the NSNumber back to a NSInteger 
NSInteger result = [yourArray[section][row] integerValue]; 
+0

Este es un buen comienzo, pero mostrar cómo expandirlo para mostrar cómo agregar elementos y cómo acceder a los elementos lo convertiría en una respuesta más completa. – Caleb

+1

Se agregó un poco más de funcionalidad @Caleb – JaredH

Cuestiones relacionadas