Sono nuovo per iOS5 e storyboarding.iOS5: Confusione con loadview e init e variabili di istanza
Ho notato che se dichiaro variabili di istanza all'interno del mio file viewcontroller .h e imposto i valori all'interno del mio file init del mio viewcontroller, quando viene visualizzata la vista del viewcontroller, le variabili di istanza mostrano null all'interno di viewDidLoad . Per poter ottenere myvariables, avrei bisogno di fare [self init] all'interno di viewDidLoad. Le mie domande sono:
@interface tableViewController : UITableViewController
{
NSMutableArray *myvariable;
}
@end
@implementation tableViewController
-(id)init
{
myvariable = [[NSMutableArray alloc]initWithObjects:@"Hi2",@"Yo2",@"whatsup2", nil];
}
- (void)viewDidLoad
{
NSLog(@"%@",myvariable); // DISPLAYS NULL
[super viewDidLoad];
}
- Perché non è la mia variabili disponibili in viewDidLoad quando ho dichiarato e realizzato nel mio file .he .m?
- Se è il caso, viewDidLoad o viewWillAppear i punti comuni per caricare i dati per il viewcontroller?
- Sembra che anche quando si istanzia un viewcontroller e si richiami la funzione init, viewDidLoad non ha necessariamente le variabili da visualizzare.
- Dov'è il posto giusto/i metodi per caricare il modello (dati) per il mio viewcontroller?
Grazie in anticipo
HI Firoze, Grazie per la risposta. initWithCoder è sicuramente la funzione giusta per chiamare, Tutti i viewcontroller chiamano sempre initWithCoder. Qual è la differenza tra la mia istanza variabile in initWithCoder, initWithNibName e init?Significa che quando eseguo SomeViewController * test = [[SomeViewController alloc] init]; viene chiamato anche initWithCoder? – sonoluminescence
'awakeFromNib' è un posto migliore per tale inizializzazione IMO. Per rispondere alla domanda: se si crea un oggetto da un file pennino, utilizzare awakeFromNib, se si crea un oggetto nel codice, utilizzare init. – Abizern
Beh, no, @sunwukong, non sto suggerendo di chiamare da solo initWithCoder. Il framework chiamerà quel metodo quando disarchiverà qualsiasi controller di vista che hai nello storyboard. Pertanto, se si desidera inizializzare un controller di visualizzazione in uno storyboard, è necessario eseguire l'override di initWithCoder: e/o awakeFromNib. –