Question

I ai une application avec 2 écrans (MainViewController et AboutViewController). Sur l'utilisateur de cliquer sur un bouton, je voudrais charger l'écran AboutViewController, qui est défini dans un autre XIB.

Cela semble simple, mais je ne peux pas sembler trouver mon aujourd'hui-fu google. Comment puis-je retirer ceci?

Était-ce utile?

La solution

Lorsque vous appelez [AboutViewController init], il est prévu d'appeler une certaine forme de [super init], qui est synonyme de [UIViewController init]. Lorsque cela se produit, votre contrôleur de vue recherchera automatiquement un fichier nib appelé (dans votre cas) AboutViewController.xib. Si elle trouve ce fichier, il charge son contenu dans votre contrôleur de vue pour vous.

Donc, fondamentalement, tout ce que vous devez faire est d'initialiser votre contrôleur de vue, et assurez-vous qu'il a le même nom que le fichier nib associé.

Si vous voulez charger un fichier nib avec un nom différent dans votre contrôleur de vue, vous pouvez appeler explicitement initWithNibName:bundle: avec le nom de fichier selon nib vous aimez

Si l'initialisation standard (avec un fichier nib même nom) ne fonctionne pas pour vous, il y a deux choses que vous pouvez vérifier.

  • l'orthographe du nom de classe est le même que l'orthographe (et cas) du fichier nib
  • le fichier nib est inclus dans le projet, et non pas seulement assis dans le même répertoire
  • La méthode d'initialisation de votre sous-classe UIViewController n'appelle également [super init]
  • vous appelez votre méthode d'initialisation de sous-classe UIViewController
  • vous faites bien le point de vue du contrôleur de votre vue visible

Autres conseils

Avec un écran À propos il vous suffit probablement pour afficher une vue puis le rejeter. Ainsi, plutôt que d'utiliser un nouveau contrôleur vue entière, vous pouvez juste couvrir la vue actuelle.

En supposant que vous avez un Ivar

UIView *aboutUsView;

avec la propriété appropriée.

Dans votre contrôleur de vue faire:

[[NSBundle mainBundle] loadNibNamed:@"AboutUsView" owner:self options:nil]; // Retains top level items
[self.view addSubview:aboutUsView];  // Retains the view
[aboutUsView release];

Pour supprimer le point de vue, par exemple dans une action reliée à un bouton sur la vue, faites:

[aboutUsView removeFromSuperview], aboutUsView = nil;  // Releases the view

NSBundle loadNibNamed:

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