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
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
.
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];