web-dev-qa-db-fra.com

Chargement de UIViewController "depuis" le fichier Nib

J'essaie de créer un UIViewController à partir d'un fichier Nib. Sur Google, j'ai constaté que je ne peux charger qu'une UIView depuis Nib.

Mais certains suggèrent que je pourrais créer un fichier Nib (de UIView) dont le propriétaire du fichier est défini sur notre ViewController.

C'est ce que j'ai fait, je n'ai eu aucun plantage, mais la vue n'est tout simplement pas affichée.

EDIT: J'ai essayé de pousser le viewcontroller comme ceci

self.navigationController!.pushViewController(CoolViewController(), animated: true );

Mais il montre toujours un écran noir quand il est poussé

XCode 6.3 - Ne pas utiliser de storyboards

20
JayVDiyk

Vous devez allouer votre ViewController, puis l'initialiser en indiquant à iOS le nom de la plume.

Je vois que vous utilisez Swift; J'ai peur de ne pas connaître Swift, seulement objectif-c. Mais voici comment cela se ferait dans l'objectif-c:

[self.navigationController pushViewController [[[CoolViewController alloc] initWithNibName: @"CoolDesign" bundle: nil] autorelease];

... où "CoolDesign" est le nom de base de votre plume. Autrement dit, vous créez CoolDesign.xib dans Interface Builder, Xcode compile le XML - texte - xib dans CoolDesign.nib, puis vous dites à initWithNibName de n'ouvrir que @ "CoolDesign".

Il ne suffit pas de dire à Interface Builder qu'un document de conception est un UIViewController. Alors qu'en principe, l'iOS pourrait comprendre ce que vous voulez dire, vous pouvez également en principe avoir plusieurs pointes pour une seule sous-classe UIViewController.

18
Mike Crawford

Essayez ceci, vous pouvez charger un UIViewController avec nibName:

rapide

self.navigationController!.pushViewController(CoolViewController(nibName: "CoolViewControllerNibName", bundle: nil), animated: true )

Objectif-C

CoolViewController*coolViewCtrlObj=[[CoolViewController alloc] initWithNibName:@"CoolViewControllerNibName" bundle:nil];
[self.navigationController pushViewController:coolViewCtrlObj  animated:YES];
25
Sudhin Davis