【问题标题】:How to get an instance of my view controller from the app delegate, storyboards, iOS6如何从应用程序委托、情节提要、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]];

【问题讨论】:

    标签: iphone ios pointers uiviewcontroller appdelegate


    【解决方案1】:

    尝试以下方法:

    ViewController *controller = (ViewController*)self.window.rootViewController;
    

    它将返回主故事板的初始视图控制器。

    【讨论】:

    • 非常感谢。做到了!我的代码无法将数据传递给我的视图控制器是否有特殊原因?
    • 不客气。 instantiateInitialViewController 方法创建初始视图控制器的一个新实例,它与屏幕上显示的不同。您应该使用此方法切换到主故事板以外的故事板。你可以阅读更多关于它的信息here
    • 知道了。也感谢您的链接。
    • 现在它的 -- self.view.window.rootViewController 其中 self 是 UIViewController
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多