Question

Est-il possible de charger une vue modalement sans le voir? J'ai besoin d'accéder à des méthodes sur le contrôleur de vue modal dans les propriétés des composants mis en tour de l'interface utilisateur dans un XIB. Je veux définir ces propriétés, mais je ne veux pas voir la vue tout de suite. Je veux révéler lorsque l'utilisateur fait pivoter le téléphone.

Tout fonctionne, sauf la solution consiste à présenter le point de vue modal dès que les charges de l'application.

Merci, Howie

Était-ce utile?

La solution

Dans un contrôleur de vue, vous pouvez créer une prise pour un autre contrôleur. Tout ce que vous devez faire est quelque chose comme ça dans le même fichier nib dans le constructeur de l'interface:

MainController         UIViewController
->UIview               UIView

ModalController        UIViewController
->ModalControllerView  UIView

en MainController.h, créer une sortie pour le contrôleur de vue:

@property(nonatomic, retain) IBOutlet ModalController *ModalController

(et bien sûr vous avez besoin du Ivar et inclure aussi)

Dans Interface Builder, connectez ModalController mainController à la ModalController vue par glisser l'option ou vous le voulez.

Quand les charges nib, vous obtiendrez modalController réglé sur une instancié ModalController, puis méthodes MainController peuvent accéder modalController et faire tout ce qu'ils veulent lui. Il vous suffit d'utiliser presentModalView pour le présenter.

Je pense que la façon plus typique pour ce faire, cependant, est la suivante:

- (IBAction)showInfo {    

    FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
    controller.delegate = self;

    controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:controller animated:YES];

    [controller release];
}

(C'est directement à partir du modèle de projet d'application utilitaire dans Xcode.)

En d'autres termes, créer le contrôleur modal et vue dans son propre fichier nib puis chargez le fichier nib manuellement au besoin. Ceci est plus efficace de la mémoire car il n'instancier pas l'objet jusqu'à ce qu'il soit réellement nécessaire.

Il y a aussi aucune raison pour laquelle vous ne pouvez pas le faire:

    modalController = [[ModalViewController alloc] initWithNibName:@"ModalView" bundle:nil];

dans la méthode viewDidLoad MainController ou initWithCoder ou quelque chose, puis passez à configurer comme vous le voulez.

Autres conseils

Si vous avez une autre vue, pourriez-vous insérer ce point de vue sous la vue existante en utilisant

(void)insertSubview:(UIView *)view atIndex:(NSInteger)index

puis lorsque le dispositif tourne, basculer l'affichage?

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