Dear ALL:
在一張大圖裡,我塞入很多元件
其中一個是 MyView, 繼承自 UIView
我知道可以在 IBuilder 環境填入 class name
於是執行時 MyView 的
- (id)initWithCoder:(NSCoder *)aDecoder
就被呼叫了
'如果'我在這裡面填入 (我強調了如果,表示我知道這樣做有問題;不是不知道)
[[NSBundle mainBundle]loadNibNamed:@"MyView" owner:self options:nil][0];
那麼在載入時會遞迴個不停;原來 loadNib 本身,內部又會去啟動 initWithCoder!!
我的解決方法是,在大圖的 .m 檔 (或說在 controller 檔)
那邊只關聯一個 UIView, 而不是關聯 MyView
然後利用這個 UIView 提供的座標去手動載入它
View = [[MyView alloc] initWithFrame:UIViewFrame.bounds];
這時因為我是用 initWithFrame 來初始 MyView 的
所以在其內擺入 loadNib 相關程式碼
執行至此時, loadNib 依然內部會叫用 initWithCoder
但現在沒關係了,不會遞迴叫用了,因為 initWithCoder 裡,我不安排 loadNib 了
程式是寫出來了,只是覺得要繞一大圈
為什麼我不能在 IBuilder 環境直接填 class name
而且要利用一個 View 當做 Frame 去佔位置呢?
有沒有更直接的寫法
謝謝