我有一個UIView子類,我想從一個NIB文件實例化。我一直在使用這種方法來做到這一點:使用NIB文件實例化一個帶有委託的UIView子類
UINib *nib = [UINib nibWithNibName:@"SSNodeToolsView" bundle:[NSBundle mainBundle]];
self = [[[nib instantiateWithOwner:self options:nil] objectAtIndex:0] retain];
...實際上,這會正確創建對象並將所有內容鏈接起來。但是,該對象立即失去對其委託的訪問權限。代表按照常規方式聲明:
id delegate
@property (nonatomic, assign) id delegate
@synthesize delegate
...等等。但是,當對象從其筆尖加載時,委託立即變爲空,並忽略爲其分配值的任何嘗試。奇怪這不會導致崩潰。誰能告訴我爲什麼這是?我寧願使用nib加載方法,因爲我的應用程序的這些元素很可能會經常重新設計,使用nib最容易做到這一點。
-Ash
啊哈,謝謝!這就是爲什麼。我正在改變一種更簡單的方法,即將自定義視圖依賴於視圖控制器並直接從按鈕發送IBActions。那是我仍然可以使用NIB – Ash 2011-03-01 18:15:53
是的,這是有效的,但你不必。我在自定義的UIView子類中使用上述代碼,這些子類不屬於視圖控制器。這是一條相當好的路線 - 視頻控制器方法肯定有一些好處,但感覺更「重量級」。除非您自己手動將這些調用轉發給子視圖控制器,否則您無法獲得某些好處(viewWill/Did/Appear/Disapper)。 – Bogatyr 2011-03-01 18:51:14
其真的不錯 – GameLoading 2011-06-10 06:16:38