什么时候一个IBOutlet初始化?(When does an IBOutlet initializ

2019-08-31 16:56发布

我建立了一个出口,用于通过界面生成一个文本视图。 文本视图加载罚款,但我不能访问它的任何性质的程序,因为出口始终是nil

当它实例化? 我即使在applicationDidFinishLoading被调用,它仍然不是“活着”或者未归档。

Answer 1:

出口不会实例因为出口是可变(或属性)。

被加载的笔尖时在笔尖的对象实例化,并将它们作为立即分配到各出口地之后,对象被创建之后,但在awakeFromNib被发送到所有相关的对象。

换句话说,笔尖装做以下的所有,顺序如下:

  1. 创建或重新创建的所有存储在笔尖的对象。 (这不包括文件的所有者,第一响应者和其他外部和虚对象。)
  2. 设置,其连接在所述笔尖在笔尖具有其连接到相同的笔尖对象中的所有出口属性。 (如:甲视图控制器的view 。出口到顶层视图)
  3. 发送awakeFromNib到笔尖,和(可可)对象也以文件的所有者(例如,车窗控制器)。

你的问题是通过#2回答。

资源编程指南提供了更多信息 。 详细是可可和可可触摸之间微妙的不同特别是作为其对象发送关于awakeFromNib消息以及哪些不是。

当它实例化? 我即使在applicationDidFinishLoading被调用,它仍然不是“活着”或者未归档。

该文的观点是不是?

它可能是,你只是没有连接电源插座。 在笔尖检查。

另一种可能性:你创造了另外一个笔头文本视图,而不是一个在应用程序委托创建(如果你甚至创造了一个笔尖在所有的应用程序委托),而你没有视图连接到右侧出口宾语。 也许你创建的文本视图的笔尖第二应用程序代理; 这个应用程序的委托实际上不是应用程序的委托,这就是为什么真正的应用程序委托不看文本视图,你给的文本视图,冒名顶替,而不是真正的麦考伊。



Answer 2:

请确保您已链接到IBOutlet中正确的文件所有者。 点击文件所有者,然后单击身份检查看到,文件所有者指向正确的文件。

  1. 点击下Interfacebuilder->对象的对象
  2. 在网点,确保为IBoutlets各项属性。 如果没有显示他们的文件所有者可能是错误的。
  3. 链接网点的对象 - 点击 - >拖行对象

当视图控制器-aka文件所有者 - 包含在所述.H IBoutlets被初始化IBoutlets应该被创建。



文章来源: When does an IBOutlet initialize?