2009-08-07 77 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