2009-07-01 16 views
14

Ho suddiviso UIViewController in una nuova classe, PageViewController (Sto scrivendo un'app per libri semplici). Voglio aggiungere una nuova vista caricata da un file di pennino e sto usando il seguente codice. Funziona.Perché initWithNibName non funziona per la sottoclasse UIViewController?

PageViewController *viewController1 = [[UIViewController alloc] initWithNibName:@"Page1" bundle:nil]; 
[viewController1.view setUserInteractionEnabled:YES]; 
[self.view addSubview:viewController1.view]; 

Tuttavia, la prima riga è errata perché dovrei chiamare allocazione su PageViewController. Quando lo correggo (sotto), il codice viene compilato ma il file xib non viene caricato e la vista è trasparente.

PageViewController *viewController1 = [[PageViewController alloc] initWithNibName:@"Page1" bundle:nil]; 
[viewController1.view setUserInteractionEnabled:YES]; 
[self.view addSubview:viewController1.view]; 

Il metodo PageViewController initWithnibName è stato non è commentato ed è solo l'impostazione predefinita, l'impostazione di auto = [super initWithnibName: fascio nibNameOrNil: nibBundleOrNil].

Cosa ho provato: Nel file di pennino Page1, ho provato a modificare la classe Proprietario file tra PageViewController e UIViewController. Sì, mi sono ricordato di ricollegarlo alla presa di vista in seguito.

Aiuto, per favore! Sono perplesso.

+0

può essere errore è nel metodo initWithnibName overrided – oxigen

+0

E 'solo il default: - (id) initWithnibName: (NSString *) nibNameOrNil bundle: (NSBundle *) nibBundleOrNil { se (self = [super initWithnibName: nibNameOrNil fascio : nibBundleOrNil]) { // Inizializzazione personalizzata \t \t NSLog (@ "In pageviewcontroller custom init"); } return self; } – niels

risposta

16

Hai sovrascritto il metodo loadView in PageViewController? Cosa succede se NSLog il viewController1.view?

Infatti, in Interface Builder, devi impostare il proprietario del file su PageViewController e connetterne la vista alla vista che hai in Interface Builder.

+2

GRAZIE! Il bug non era in loadView, era in viewDidLoad - Avevo del codice in viewDidLoad in PageViewController che stava sovrascrivendo l'inizializzazione del file pennino. Ho passato la scorsa notte dalle 2 alle 4 cercando di rintracciarlo, grazie per l'aiuto! – niels