Question

J'essaie de charger une vue temporaire, à insérer, à partir d'un autre contrôleur de vue. Les contrôleurs de vue de mon application sont structurés:

Application > Tab Bar Controller > TabBarItem > View Controller

Dans ce contrôleur de vue, j'ai un bouton qui déclenche avec succès une méthode pour charger la vue temporaire:

- (IBAction)displayTimePickerViewForDayButton:(id)sender {

    NSLog(@"displayTimePickerViewForDayButton method entered.");

    // create the selector view controller and become the delegate
    WOTimePickerViewController *tpvc = [[WOTimePickerViewController alloc] initWithNibName:@"WOTimePickerView" bundle:nil];
    tpvc.delegate = self;
    tpvc.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

    [self presentModalViewController:tpvc animated:YES];
    [tpvc release];
}

J'ai vérifié que mon WOTimePickerViewController est renvoyé avec succès par la méthode init, mais la vue n'entre jamais dans sa méthode viewDidLoad.

Ainsi, si je regarde la vue dans IB, elle semble être connectée à la "vue" de la vc. propriété. Lorsque je lance la vue dans le simulateur (à partir d'IB), le rendu est correct.

Lorsque j'exécute l'application depuis XCODE, je peux naviguer dans la vue, cliquer sur mon bouton et un écran blanc vide apparaît (notez que ce n'est pas l'arrière-plan blanc de la vue qui devrait être chargé).

Était-ce utile?

La solution

Vous devriez le faire comme ça.

WOTimePickerViewController *tpvc = [[WOTimePickerViewController alloc] initWithNibName:@"WOTimePickerView" bundle:nil];
    tpvc.delegate = self;
UINavigationController *navCntrlr = [[UINavigationController alloc] initWithRootViewController:tpvc];
    navCntrlr.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

    [self.navigationController presentModalViewController:tpvc animated:YES];
    [tpvc release];

Mais la chose importante qui vous manque, c’est que vous ne le faites pas correctement.

vous devriez le faire comme:

[self.navigationController presentModalViewController:tpvc animated:YES];

et lorsque vous souhaitez fermer le contrôleur modalView, procédez comme suit:

[self.navigationController dismissModalViewControllerAnimated:YES];

Autres conseils

Je pense que le modalTransitionStyle du contrôleur de vue s’applique aux vues modales affichées à partir de ce contrôleur de vue. Ainsi, si vous souhaitez utiliser la transition UIModalTransitionStyleCoverVertical pour afficher votre contrôleur modal, vous devez définir la propriété modalTransitionStyle sur le contrôleur de vue parent (self), et non le nouveau.

Je n'ai aucune expérience de l'utilisation de modalTransitionStyle, mais peut-être que définir cette propriété avant le chargement de la vue est à l'origine de problèmes? Je vais essayer de commenter ...

On dirait que tout est configuré correctement dans IB. Tant que le propriétaire de votre fichier est le contrôleur de vue et que sa sortie de vue est liée à la vue, vous devriez être bon.

J'espère que cela vous aidera,

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top