iphone 2.x sdk - riferimento a un viewController all'interno di un altro viewController visualizzato come null
-
03-07-2019 - |
Domanda
Sto cercando di fornire a un'istanza appena creata di un controller di visualizzazione picker personalizzato un riferimento a un'altra viewController in questo modo (si trova all'interno di un selettore da un'istanza ponceViewController che viene chiamata dopo aver toccato una riga tableView) ...
- (IBAction)rowTapped:(id)sender {
TimerPickerViewController *viewController = [[TimerPickerViewController alloc] initWithNibName:@"TimerPickerView" bundle:nil]
self.timerPickerViewController = viewController;
timerPickerViewController.ponceViewController = self.rootViewController;
[viewController release];
}
Quindi nella mia istanza timerPickerViewController ho:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
...
// ponceViewController is null here
...
}
}
Il timerPickerViewController viene visualizzato correttamente, e posso anche accedere alle cose da ponceViewController dopo aver toccato " Fatto " pulsante, ma sto sintetizzando ponceViewController ed è nella mia intestazione e tutto il resto, e non riesco ad accedervi all'interno del metodo initWithNibName di TimerPickerViewController - è sempre nullo. :( Qualcuno ha qualche idea?
Modifica: dovrei anche menzionare che ponceViewController è nullo nel metodo viewDidLoad di TimerPickerViewController anche ...
- (void)viewDidLoad {
... no such thing as ponceViewController here! ...
}
Soluzione
Quindi l'ho risolto rimuovendo completamente initWithNibName: (NSString *) bundle nibNameOrNil: (NSBundle *) nibBundleOrNil
da timerPickerViewController e invece ho usato viewDidLoad
. Tutto sembra funzionare bene. Penso che il problema fosse che la proprietà non era ancora disponibile quando ci si riferiva all'interno di initWithNibName
. Spero che aiuti qualcun altro.