ho un NSDictionary
che diremo è come questo:Molti UITableViewCells differenti in una TableView
key: value:
name Bookshelf
movies Array containing: (Movie 1, Movie 2, Movie 3)
books Array containing: (Book 1, Book 2, Book 3)
music Array containing: (Music 1, Music 2, Music 3)
E così via. Ora quello che sto cercando di fare è creare una tabellaView che mostri tutte queste informazioni, ma con diversi tipi di celle in base a quale sia la chiave del dizionario. Ad esempio, i film utilizzano i libri cellForMovies
utilizzano l'uso di musica cellForBooks
cellForMusic
, ognuno ha il proprio layout.
Ovviamente, sto semplificando eccessivamente, ma spero che capiate cosa sto cercando di fare.
Sono in grado di farlo se faccio sezioni e un tipo di cella diverso per ogni sezione, ma non voglio farlo. Voglio essere in grado di avere una tabella come questa, per esempio:
cellForBooks
cellForMovies
cellForMovies
cellForMusic
cellForBooks
e così via ... Tutte le idee o le risorse mi consente di puntare? Mi interessa solo il supporto per iOS 5 (storyboard).
Edit con la soluzione:
Un grande ringraziamento a tutti coloro che hanno contribuito, in particolare atticus che ha messo insieme il pezzo finale.
Ciò che ha finito per funzionare è stato quello di modificare la struttura dei dati in modo che fosse una matrice di dizionari e quindi aggiungere un Key: type Value: book/movie/music
a ciascuna voce. La struttura dei dati ora si presenta come:
Array[0]: Dictionary: [Key: type Value: book], [Key: name Value: Physics];
Array[1]: Dictionary: [Key: type Value: music], [Key: name Value: Rock];
Poi per configurare le cellule che ho fatto questo:
NSString *CellIdentifier = @"Cell";
NSDictionary *object = [self.listOfStuff objectAtIndex:indexPath.row];
if ([[object objectForKey:@"type"] isEqualToString:@"book"]){
CellIdentifier = @"BookCell";
}else if ([[object objectForKey:@"type"] isEqualToString:@"music"]){
CellIdentifier = @"MusicCell";
}else if ([[object objectForKey:@"type"] isEqualToString:@"movie"]){
CellIdentifier = @"MovieCell";
}
ognuno di questi ha avuto un tableviewcell diverso nella storyboard. Abbiamo capito se si desidera utilizzare una delle funzioni cellulari incorporati, come cell.textLabel.text
avevi bisogno di fare questo:
cell.textLabel.text = [object objectForKey:@"name"];
cell.textLabel.backgroundColor = [UIColor clearColor];
cell.textLabel.opaque = NO;
Spero che questo aiuti qualcun altro in futuro.
C'è uno storyboard da qualche parte? Non ne vedo uno nel repository. – atticus
È stato localizzato per qualche motivo. È nella directory en.lprog. –
Capito. Va tutto bene, tranne che stai usando la proprietà textLabel integrata nella cella personalizzata. Quando lo si imposta, la cella si nasconde e il colore di sfondo dell'etichetta è bianco fisso. Quando selezioni la cella, rende temporaneamente lo sfondo trasparente e puoi vedere gli elementi dietro di esso. Se si desidera utilizzare la textLabel integrata, è sufficiente impostare il colore di sfondo per cancellare: \t 'cell.textLabel.backgroundColor = [UIColor clearColor]; cell.textLabel.opaque = NO; ' – atticus