我怎样才能从类加载故事板编程?

我的问题是,我正在寻找使用故事板xib的方式 。 但我找不到正确的方式加载和以编程方式显示故事板。 项目是从xib开始开发的,现在很难将所有的xib文件嵌套在storyboard中。 所以我正在寻找一种方法来做到这一点,如使用alloc, init, push for viewControllers。 在我的情况下,故事板中只有一个控制器: UITableViewController ,它具有静态单元格,并显示一些内容。 如果有人知道正确的方式与xib和故事板一起工作,而没有巨大的重构,我将不胜感激任何帮助。

在故事板中,转到“属性”检查器并设置视图控制器的标识符。 然后您可以使用下面的代码呈现该视图控制器。

 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) 

条件

将一个Storyboard ID分配给您的视图控制器。

故事板ID

IB>显示身份检查器>身份>情节串联ID

斯威夫特(遗产)

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

编辑:斯威夫特2build议在评论由弗雷德A.

在属性检查器给这个视图控制器的标识符和下面的代码为我工作

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

尝试这个

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

迅速
NavigationControllerpushController你可以replace

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

在Xamarion.iOS(C#)中:

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