在 appDelegate 中访问故事板和嵌套的 UIViewController

Posted

技术标签:

【中文标题】在 appDelegate 中访问故事板和嵌套的 UIViewController【英文标题】:access storyboard and nested UIViewControllers in appDelegate 【发布时间】:2014-02-04 15:56:18 【问题描述】:

如何访问故事板以及它在 appDelegate 中的 UIViewControllers。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions


    return YES;

【问题讨论】:

你为什么要这样做? 原因可能超出了现有策略的范围,但主要目的是挂钩 PureMVC 框架,并将中介实例化到 AppDelegate 内的 ViewControllers(故事板内)或从 AppDelegate 启动的另一个类内。 【参考方案1】:

试试这个:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *uvc = [storyboard instantiateViewControllerWithIdentifier:@"Details"];
[self.window.rootViewController presentViewController:uvc animated:YES completion:nil];

【讨论】:

感谢 Suny,我在上面的答案中添加了一些 cmets,基本上是尝试访问情节提要中的所有 UIViewControllers【参考方案2】:

如果您的 UIViewController 被命名为 MyViewController 并且它的故事板的名称为 MyViewController.storyboard,那么您请求的代码将如下所示:

// load storybord with name MyViewController.storyboard
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyViewController" bundle:nil];

// get an instance of root view controller for the storyboard
MyViewController *viewController = [storyboard instantiateInitialViewController];

【讨论】:

感谢您的回答,假设情节提要中有3个或更多的UIViewController,我该如何访问它们? (我希望它们已经被 ios 实例化了,不是吗?) 您可以使用它的标识符来实例化添加到情节提要的任何 UIViewController。标识符是一个基本字符串,您应该在 Interface Builder 侧面菜单的 Identity inspector 选项卡中为选定的视图控制器指定,默认情况下,您添加到情节提要的任何视图控制器都没有标识符字符串。而不是 您应该使用 并将标识符作为参数传递以从情节提要中获取具体视图控制器的实例

以上是关于在 appDelegate 中访问故事板和嵌套的 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章

从AppDelegate中访问NavigationController指向的初始视图

故事板和笔尖兼容?

在代码中混合故事板和约束

ios swift故事板和xibs

使用 Parse.com 的多个 Segue 故事板和 TableViewCell

故事板和苹果推荐