En bref: je veux avoir deux vues en plein écran, où je peux basculer entre Une vue et vue B. je sais que je pouvais utiliser la Barre d'onglets de contrôle, mais je ne veux pas. Je veux voir comment c'est fait à la main, pour l'apprentissage de ce qui se passe sous le capot.
J'ai un UIViewController qui agit comme une racine contrôleur:
@interface MyRootController : UIViewController {
IBOutlet UIView *contentView;
}
@property(nonatomic, retain) UIView *contentView;
@end
Le contentView est relié à une UIView laquelle j'ai ajouté une sous-vue de la "vue" de la Plume. Cela a la couleur verte et je vois plein écran. Fonctionne très bien.
Ensuite, j'ai créé deux autres Contrôleurs de Vue peu de la même manière. ViewControllerA et ViewControllerB. ViewControllerA a un fond bleu, ViewControllerB a un arrière-plan noir. Juste pour voir celui qui est actif.
Ainsi, dans la mise en œuvre de myRootController, je fais ceci:
// 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];
}
Par ailleurs, l'-initWithNib méthode ressemble à ceci:
- (id)initWithNib { // Load the view nib
if (self = [super initWithNibName:@"ViewA" bundle:nil]) {
// do ivar initialization here, if needed
}
return self;
}
Qui fonctionne. Je vois le point de vue de ViewControllerA lors du démarrage de l'application. Mais maintenant, la grande question est: A-Vue-Contrôleur généralement toutes ces méthodes comme:
- (void)viewWillAppear:(BOOL)d'animation;
- (void)viewDidDisappear:(BOOL)d'animation;
- (void)viewDidLoad;
...et ainsi de suite. De qui ou de quoi, ou comment ces méthodes de l'appeler si je le fais "mon" chemin sans un onglet de la barre de contrôleur? Je veux dire: Si j'alloue que ViewController de la classe et la vue est visible, aurais-je prendre soin de l'appel de ces méthodes? Comment sait-elle que viewWillAppear, viewDidDisappear, ou viewDidLoad? Je crois que la Barre d'Onglet Contrôleur a tous cette "intelligence" sous le capot. Ou je me trompe?
Mise à JOUR: je l'ai testé. Si je dégage la vue-contrôleur (par exemple: ViewControllerA), je n'aurez pas de message de journal sur viewDidDisappear. Seulement lors de l'allocation et initialisation de la ViewControllerA, je reçois un viewDidLoad. Mais c'est tout. Donc, tous les signes de stand pour l'intelligence de UITabBarController maintenant ;) et je dois trouver comment reproduire ça, hein?