Ios5 何时在其中创建IBOutlet ViewController对象';谁是代表?

Ios5 何时在其中创建IBOutlet ViewController对象';谁是代表?,ios5,mpmovieplayercontroller,viewcontroller,appdelegate,Ios5,Mpmovieplayercontroller,Viewcontroller,Appdelegate,首先让我提一下,我对IOS开发还不熟悉 通常,当我们在XCODE中创建一个新项目时,没有像这样声明对象 @property (nonatomic, retain) IBOutlet ViewController *viewController; 在自动创建的AppDelegate.h中。 而且,大多数作为子视图创建并添加到主视图的自定义视图仍然可以正常工作 但在子应用程序中,需要如上所述声明视图控制器的对象。并且必须添加到AppDelegate.m中的窗口的子视图中,如下所示:

首先让我提一下,我对IOS开发还不熟悉

通常,当我们在XCODE中创建一个新项目时,没有像这样声明对象

    @property (nonatomic, retain) IBOutlet ViewController *viewController;
在自动创建的
AppDelegate.h
中。 而且,大多数作为子视图创建并添加到主视图的自定义视图仍然可以正常工作

但在子应用程序中,需要如上所述声明视图控制器的对象。并且必须添加到
AppDelegate.m
中的
窗口的子视图中,如下所示:

    [window addSubview:viewcontroller.view];
    [window makeKeyAndVisible];
否则,某些控制器的视图(例如,
MPMediaPlayerController.view
(在我的例子中)无法作为子视图正确添加到
viewController
的视图中

为什么会发生这种情况


在哪些情况下,我们需要在委托类中声明视图控制器的对象?

根据您使用的Xcode版本和定义接口的方式,有不同的答案,但是,假设故事板最近出现了一些情况,答案是在加载初始控制器的过程中发生的

对于要使用的视图控制器,需要保留它,窗口的
rootViewController
是初始默认值。如果查看“在启动时配置初始视图控制器”的文档,您将看到列出的一些步骤:

“[…]iOS执行以下操作:

它将窗口的rootViewController属性设置为新视图 管制员。”