2012-05-28 14 views
9

Voglio usare due matrice bidimensionale a Ios, per esempio voglio preparare una matrice per tableview origine dati,bidimensionale array in ios

UITableViewCell array[sections][rows];

Qualcosa di simile, e qui non posso predichiarare la dimensione anche.

Grazie

+0

di controllo [questo] (http://stackoverflow.com/a/4982636/845115) –

+1

Un piccolo consiglio ... ti consiglierei di non memorizzare manualmente i tuoi TableCell negli array, dal momento che le celle possono essere riutilizzate da UITableView per una migliore gestione della memoria e delle prestazioni, utilizzando il metodo dequeueReusableCellWithIdentifier. È necessario conservare la rappresentazione dei dati che si desidera visualizzare negli elenchi, negli array o in qualsiasi altra cosa, quindi associare i dati alle celle nel metodo cellForRowAtIndexPath. –

risposta

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]; 

e questo è come si seleziona il valore dalla matrice

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

impostare un NSDictionary e utilizza un NSIndexPath come la chiave per ogni cella

+1

Non sarebbe molto confuso se l'elenco nella vista tabella fosse cambiato, ad esempio se un elemento fosse stato rimosso dall'elenco? Quindi dovresti cambiare le chiavi per tutti gli elementi seguenti nell'elenco ... –

+0

@jake_hetfield assolutamente. sarebbe utile solo per le origini dati statiche. ma poi memorizzare le celle in un array mi sembra uno sforzo inutile comunque – wattson12

1

sintattica approccio zucchero . Si noti che questo approccio non creerà automaticamente uno NSMutableArray di una determinata dimensione. La dimensione iniziale dell'array sarà 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

Questo è un buon inizio, ma mostrare come espandere per mostrare come aggiungere elementi e come accedere agli elementi lo renderebbe una risposta più completa. – Caleb

+1

Aggiunta un po 'più di funzionalità @Caleb – JaredH

Problemi correlati