In breve: voglio avere due visualizzazioni a schermo intero, in cui posso passare dalla vista A alla vista B. So che potrei semplicemente usare un controller della barra delle linguette, ma non lo voglio. Voglio vedere come questo viene fatto a mano, per imparare cosa sta succedendo sotto il cofano.View Controller: come passare da una vista all'altra a livello di programmazione?
Ho un UIViewController che agisce come un regolatore principale:
@interface MyRootController : UIViewController {
IBOutlet UIView *contentView;
}
@property(nonatomic, retain) UIView *contentView;
@end
Il contentView è collegato a un UIView che ho aggiunto come visualizzazione secondaria alla "vista" del pennino. Questo ha il colore verde e lo vedo a schermo intero. Funziona bene.
Quindi, ho creato altri due controller di visualizzazione più o meno allo stesso modo. ViewControllerA e ViewControllerB. ViewControllerA ha uno sfondo blu, ViewControllerB ha uno sfondo nero. Solo per vedere quale è attivo.
Così, nella realizzazione di myRootController, faccio questo:
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
ViewControllerA *vcA = [[ViewControllerA alloc] initWithNib];
[self.contentView addSubview:vcA.view];
[cvA release];
}
A proposito, il metodo -initWithNib assomiglia a questo:
- (id)initWithNib { // Load the view nib
if (self = [super initWithNibName:@"ViewA" bundle:nil]) {
// do ivar initialization here, if needed
}
return self;
}
che funziona. Vedo la vista da ViewControllerA quando avvio l'app. Ma ora la grande domanda è: un controller di visualizzazione ha in genere tutti i seguenti metodi:
- (vuoto) viewWillAppear: (BOOL) animato;
- (vuoto) viewDidDisappear: (BOOL) animato;
- (vuoto) viewDidLoad;
... e così via. Chi o cosa, o come si chiamerebbero quei metodi se faccio il "mio" modo senza un controller della barra delle linguette? Voglio dire: se alloco la classe di ViewController e la vista diventa visibile, dovrei preoccuparmi di chiamare questi metodi? Come fa a sapere che viewWillAppear, viewDidDisappear o viewDidLoad? Credo che il controller Tab Bar abbia tutta questa "intelligenza" sotto il cofano. O mi sbaglio?
AGGIORNAMENTO: l'ho provato. Se rilascio il controller di visualizzazione (ad esempio: ViewControllerA), non visualizzerò alcun messaggio di log su viewDidDisappear. Solo durante l'allocazione e l'inizializzazione di ViewControllerA, ottengo un viewDidLoad. Ma è così. Quindi tutti i segni rappresentano l'intelligenza di UITabBarController ora;) e devo capire come replicarlo, giusto?
suona bene ma non desidero alcun tipo di navigazione o barra delle schede;) Voglio solo viste nudi con un pulsante "vai a B", e sull'altro "vai su A". O c'è un modo per non avere quella barra di navigazione sopra? – Thanks
Puoi sicuramente nascondere la barra di navigazione se non vuoi che venga visualizzata sullo schermo. Aggiornerò la risposta con le informazioni –