Comment puis-je charger le storyboard par programmation à partir de la class?

Mon problème est que je cherchais un moyen d'utiliser à la fois le storyboard et xib . Mais je ne trouve pas le moyen de charger et d'afficher le storyboard par programmation. Le projet a commencé à se développer avec xib, et maintenant il est très difficile d'imbriquer tous les files xib dans le storyboard. Donc je cherchais un moyen de le faire en code, comme avec alloc, init, push pour viewControllers. Dans mon cas, j'ai seulement un controller dans storyboard: UITableViewController , qui a des cellules statiques avec du contenu que je veux montrer. Si quelqu'un connaît la bonne façon de travailler avec xib et storyboard sans refactoring énorme, j'apprécierai pour toute aide.

Dans votre storyboard, accédez à l'inspecteur Atsortingbuts et définissez l'identifiant du controller de vue. Vous pouvez ensuite présenter ce controller de vue en utilisant le code suivant.

 UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"myViewController"]; vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [self presentViewController:vc animated:YES completion:NULL]; 

Swift 3

 let storyboard = UIStoryboard(name: "Main", bundle: nil) let vc = storyboard.instantiateViewController(withIdentifier: "viewController") self.navigationController!.pushViewController(vc, animated: true) 

Swift 2

 let storyboard = UIStoryboard(name: "Main", bundle: nil) let vc = storyboard.instantiateViewControllerWithIdentifier("viewController") self.navigationController!.pushViewController(vc, animated: true) 

Prérequirejs

Affectez un ID Storyboard à votre controller de vue.

ID du storyboard

IB> Afficher l'inspecteur d'identité> Identité> ID du storyboard

Swift (inheritance)

 let storyboard = UIStoryboard(name: "Main", bundle: nil) let vc = storyboard.instantiateViewControllerWithIdentifier("viewController") as? UIViewController self.navigationController!.pushViewController(vc!, animated: true) 

Edit: Swift 2 suggéré dans un commentaire par Fred A.

Dans l'inspecteur d'attributes, donnez l'identifiant pour ce controller de vue et le code ci-dessous fonctionne pour moi

 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; DetailViewController *detailViewController = [storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"]; [self.navigationController pushViewController:detailViewController animated:YES]; 

Essaye ça

 UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"Login"]; [[UIApplication sharedApplication].keyWindow setRootViewController:vc]; 

en swift
NavigationController et pushController vous pouvez replace pour

 present(vc, animated:true , completion: nil) 

Dans Xamarion.iOS (C #):

 var storyBoard = UIStoryboard.FromName(name: "Main", storyboardBundleOrNil: null); var viewController = storyBoard.InstantiateViewController(identifier: "viewController"); NavigationController.PushViewController(viewController: viewController, animated: true);