2014-01-27 53 views
0

我有一個UIViewcontroller我在其上顯示包含註冊表單的UIview。 現在我需要在另一個UIViewcontroller上使用同樣的註冊表單,而不需要爲第二個UIViewcontroller重新創建相同的註冊表單。iOS:加載其他視圖控制器的uiview

我正在使用UInavigationcontroller。

有什麼辦法可以達到這個目的嗎?我從最近幾個小時就陷入困境並嘗試了一切。

+0

[視圖控制器遏制](http://www.objc.io/issue-1/containment -view-controller.html) – Abizern

+0

選項1:將通用功能放在不同的類中,並從這兩個視圖控制器中繼承。選項2:將常用功能放在幫助類中,並在2個視圖控制器中使用該類(如果將它們定義爲靜態)或對象。如果你想重新使用GUI設計,你會碰到一個小問題(我還沒有想出如何正確使用Storyboard)。 – alinoz

+0

@Abizern:它只適用於視圖是主視圖,但在我的情況下,要添加的視圖嵌套在內部。 – user3240770

回答

-1

您可以在另一個視圖控制器中添加viewController。創建registretionViewController的實例並在當前的viewcontroller vew中添加其視圖。 [self.view addSubview:regViewController.view]。如果你想推這個,你可以簡單地創建它的實例並推入導航堆棧。

+0

UIViewController遏制是一個更好的主意,我甚至不確定你的代碼會在沒有它的情況下乾淨地編譯。 – Abizern

+0

如果您需要與其他視圖控制器相同的視圖,那麼我認爲這是創建實例並將視圖添加爲子視圖的好選擇。上面的代碼不會是整體而是它的一種解決問題的方法 –

+1

爲什麼反對投票,將viewcontroller作爲子視圖添加視圖是遏制。 –

0

第一種方法&我傾向於創建registration form作爲單獨的UIView類。

然後,您可以在各種view controllers中使用它作爲subview

第二種方法,您可以創建一個parent class &繼承此parent class這兩個類。該父類將包含所有常用功能(如@alinoz所述)。

+0

但單獨的UIView類將只具有功能而不是UI部分。所以我將不得不重新創建UI部分 – user3240770

-1

讓註冊表單視圖的類爲RegisterFormView。

appDelegate創建一個RegisterFormView類的公共屬性。

@property (nonatomic,strong) RegisterFormView *formView; 

當你第一次在viewController A中創建表單視圖時,也在appDelegate中分配相同的值。

[UIApplication sharedApplication].delegate.formView = registrationFormViewInstance; 

在要在其中使用相同的FormView另一個視圖控制器(B),

if([UIApplication sharedApplication].delegate.formView != nil){ 
    //use the form view 
} 
+0

應用程序委託不是您可以用來存儲任意引用的一些方便的單例。 – Abizern

+0

@Abizern什麼?應用程序委託只有一個。它的行爲就像單例,爲什麼不能使用它,除非他指定他不想觸摸appDelegate。請解釋 ..? – santhu

+0

我應該已經更清楚了 - 應用程序委託__並不意味着被用作一些用於存儲任意引用的方便的單例。 – Abizern

相關問題