2009-08-07 56 views
0

我在我的EAGLView类中有一个类“A”的实例,它在EAGLView的initWithCoder方法中被实例化。IBOutlet获取零的问题

该类“A”包含一个UIView的IBOutlet。

我还在Interface Builder中有一个这个类“A”的实例,将类“A”IBOutlet连接到相应的视图。

因此,类“A”正在实例化两次,第一次由Interface Builder生成,其中在awakeFromNib方法中,IBOutlet完美地工作。然而,它被EAGLView再次实例化了,这次连接到UIView的插座显然没有连接到UIView,所以它是零。

从设计角度可以做些什么来避免这个问题? ,我真的非常清楚地希望它足够清楚。

回答

2

不要从EAGLView的initWithCoder:方法中实例化类“A”。 NIB加载器已经为您创建了这个实例;你不应该再创建它。你觉得你需要在initWithCoder:中创建它吗?

+0

有没有一种方法可以使用由NIB加载器创建的实例,而不是创建另一个实例?当用户执行某些操作时,该类需要对东西进行排序并修改原始UIView。 – Goles 2009-08-07 07:10:24

+0

您可以通过将IBOutlet连接到它来使用由NIB加载器制作的实例。我以为你说你已经通过IBOutlet访问了NIB实例化对象? – 2009-08-07 07:15:11

0

代替第二次实例化“A”,您可能需要在EAGLView类中为您的“A”类创建一个IBOutlet,并在Interface Builder中将其连接起来。

+0

这是一种可能性,但EAGLView在IB中没有代理实例,如果它有,我会结束获得EAGLView的多个实例。 (这是在我的ApplicationDelegate类instanciated。 – Goles 2009-08-07 15:32:33