2012-05-30 94 views
1

比方說,我有三個UIViewController中兩個UIViewController中,一個XIB文件

  • UserFormViewContoller
  • NewUserFormViewController:UserFormViewController
  • UpdateUserFormViewController:UserFormViewController

所以,NewUserFormViewController和UpdateUserFormViewController視圖控制器繼承它是分享基本功能的父母。不同的將是他們的方法,創建和更新。

這些意見還有很多共同點,幾乎所有的東西。 NewUserFormViewController和UpdateUserFormViewController之間的不同視圖組件是執行保存任務(創建或更新)的按鈕

是否有可能讓兩個UIViewController共享一個XIB文件?比方說,UserFormViewController.xib然後我做

[[NewUserFormViewController alloc] [email protected]"UserFormViewController" bundle:nil]; 
[[UpdateUserFormViewController alloc] [email protected]"UserFormViewController" bundle:nil]; 

另一個問題,但重要的是,當我編輯XIB文件與Interface Builder中,什麼主人的參考網點和IBActions是議論紛紛,NewUserFormViewController或UpdateUserFormViewController? (IBActions與出路顯示,當我們點擊鼠標右鍵在佔位符 - >文件的所有者)

如果是這樣的話,我將只使用一個XIB文件,並以編程方式添加其他特定視圖組件(這將是巨大的,只有一個XIB文件,這樣我可以在一個地方做一些改變,但在兩個方面都有效)

+0

是的,可以將一個XIB用於不同的UIViewController。 –

+0

是的,它有可能,但是有沒有特定的理由去做? – Amitg2k12

+0

謝謝Nuzhat,但請看我的第二個問題。這真是我真正困惑的問題 –

回答

3

「文件所有者」只是一個慣例,因此XCode可以在其檢查員中向您顯示正確的IBOutlet s和IBAction s。如果您創建了一個通用(OO條款:摘要)UserFormViewController(.h,.m,.xib),請將它連接到IB;然後將其分爲兩個NewUserFormViewControllerUpdateUserFormViewController,他們將繼承他們的父類和他們的行爲沒有任何問題。

+0

謝謝,Cyrille。通過閱讀你的答案後的一些實驗,有點找到了我的問題的答案。 –

+0

@Cyrille:我從父控制繼承了一個子控制器,但是我的父控制器的IBOutlets未初始化。所以,我懷疑xib的繼承。那麼,您能否告訴我未初始化的奧特萊斯的原因。 – Iducool

+0

其實子類沒有加載父類的xib。任何原因? – Iducool

1

@Armaan我只是通過調用子類的alloc init方法來解決同樣的問題。我通過使用initWithNibName解決了這個問題:並且提供了父類的xib文件名。

+0

這將加載父節點的xib,但不加載子節點的xib – Iducool