如何从应用程序委托、情节提要、iOS6 获取我的视图控制器的实例
Posted
技术标签:
【中文标题】如何从应用程序委托、情节提要、iOS6 获取我的视图控制器的实例【英文标题】:How to get an instance of my view controller from the app delegate, storyboards, iOS6 【发布时间】:2012-12-27 14:53:07 【问题描述】:试图从应用程序委托中“实例化”我的初始视图控制器。我试图从应用程序委托中填充 NSMutableArray。视图控制器“myMutabelArray”的属性获取在应用程序委托中创建的数组。使用下面的代码,数组不受影响,即使它的计数是 4(有四个对象),正如在应用程序委托中创建的那样。
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle: nil];
ViewController *controller = (ViewController*)[mainStoryboard instantiateInitialViewController];
controller.myMutableArray = mutableArrayCreatedInAppDelegate;
当我从 AppDelegate 中记录计数时,我得到 4
。
当我从 ViewController 中记录计数时,我得到 0
。
我还尝试了以下方法,这让我怀疑我没有根据需要获得指向视图控制器的指针。
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle: nil];
ViewController *controller = (ViewController*)[mainStoryboard instantiateInitialViewController];
[controller.view setBackgroundColor:[UIColor lightGrayColor]];
【问题讨论】:
【参考方案1】:尝试以下方法:
ViewController *controller = (ViewController*)self.window.rootViewController;
它将返回主故事板的初始视图控制器。
【讨论】:
非常感谢。做到了!我的代码无法将数据传递给我的视图控制器是否有特殊原因? 不客气。instantiateInitialViewController
方法创建初始视图控制器的一个新实例,它与屏幕上显示的不同。您应该使用此方法切换到主故事板以外的故事板。你可以阅读更多关于它的信息here。
知道了。也感谢您的链接。
现在它的 -- self.view.window.rootViewController 其中 self 是 UIViewController以上是关于如何从应用程序委托、情节提要、iOS6 获取我的视图控制器的实例的主要内容,如果未能解决你的问题,请参考以下文章
从情节提要加载 UILabel,无法更改 cellForRowAtIndexPath 中的框架
使用委托将数据从模态视图传递到父视图(在情节提要中使用 segue)