在 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指向的初始视图