2010-04-22 21 views
19

Sto lavorando in un'app in cui ho dati in UITableView. È come un'applicazione di drill down. L'utente farà clic su una riga e andrà alla pagina successiva mostrando più record in un UITableView. Ma nel mio caso il problema è che non so fino a quanti utenti di livello possono eseguire il drill. Il numero di livelli non è fisso. Quindi ora sto pensando di creare e aggiungere i viewcontrollers a livello di codice. È possibile?? se sì come? grazie in anticipo.Come si crea un UIViewController a livello di programmazione?

risposta

20
UIViewController *controller = [[UIViewController alloc] init]; 
controller.view = whateverViewYouHave; 

Avete il vostro controller di visualizzazione che avete codificato? In questo caso probabilmente non è necessario impostare la proprietà della vista come è stata impostata in IB se è quello che hai usato. Quando si dispone del controller, è possibile spostarlo sul controller di navigazione o visualizzarlo modalmente, ecc.

+0

In questo momento sono su un viewcontroller e desidero indirizzare l'utente a un nuovo viewcontroller e visualizzare i dati in una tableview – pankaj

+0

e sì, un'altra cosa l'utente può anche eseguire il drill down al livello successivo da questo nuovo controller di visualizzazione creato in modo programmabile – pankaj

+2

Quindi probabilmente vorrai che il tuo primo controller di visualizzazione sia un UINavigationController. – willcodejavaforfood

3

UIViewController s vengono sempre creati a livello di programmazione. Sembra che basta avere la stessa classe per ogni livello di controller della vista, es .:

//CoolViewController:UITableViewController 
//CoolViewController.m 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (!self.isAtTopLevel) { 
     CoolViewController *cvc = [[CoolViewController alloc] initWithRecord:[self.records objectAtIndex:indexPath.row]]; 
     [self.navigationController pushViewController:cvc animated:YES]; 
     [cvc release]; 
    } else { 
     //do something else 
    } 
} 

In questo caso, thingies sarebbe una sorta di ricorsiva NSArray (cioè un array di array).

+0

Grazie per la risposta, in questo nuovo controller di visualizzazione ho bisogno di visualizzare un UITableview con record. Come lo farò? – pankaj

+0

e sì, una cosa in più l'utente può anche approfondire ulteriormente al livello successivo da questo nuovo controllore di vista creato in modo programmatico – pankaj

+0

(esempio aggiornato) In questo esempio, ogni controller di visualizzazione tabella avrebbe una matrice di record, ognuno dei quali avrebbe una matrice di sottodirectory (correggimi se non sto capendo correttamente il disegno). Quindi potresti avere una classe chiamata 'Record', che avrebbe un nome (visualizzato sulla cella della tabella) e un' NSArray' di 'Record's - ogni controller di visualizzazione tabella mostrerebbe la matrice di sottodirectory. – shosti

Problemi correlati