我有一個UIViewcontroller
我在其上顯示包含註冊表單的UIview。 現在我需要在另一個UIViewcontroller
上使用同樣的註冊表單,而不需要爲第二個UIViewcontroller重新創建相同的註冊表單。iOS:加載其他視圖控制器的uiview
我正在使用UInavigationcontroller。
有什麼辦法可以達到這個目的嗎?我從最近幾個小時就陷入困境並嘗試了一切。
我有一個UIViewcontroller
我在其上顯示包含註冊表單的UIview。 現在我需要在另一個UIViewcontroller
上使用同樣的註冊表單,而不需要爲第二個UIViewcontroller重新創建相同的註冊表單。iOS:加載其他視圖控制器的uiview
我正在使用UInavigationcontroller。
有什麼辦法可以達到這個目的嗎?我從最近幾個小時就陷入困境並嘗試了一切。
您可以在另一個視圖控制器中添加viewController
。創建registretionViewController
的實例並在當前的viewcontroller
vew中添加其視圖。 [self.view addSubview:regViewController.view]
。如果你想推這個,你可以簡單地創建它的實例並推入導航堆棧。
UIViewController遏制是一個更好的主意,我甚至不確定你的代碼會在沒有它的情況下乾淨地編譯。 – Abizern
如果您需要與其他視圖控制器相同的視圖,那麼我認爲這是創建實例並將視圖添加爲子視圖的好選擇。上面的代碼不會是整體而是它的一種解決問題的方法 –
爲什麼反對投票,將viewcontroller作爲子視圖添加視圖是遏制。 –
第一種方法&我傾向於創建registration form
作爲單獨的UIView
類。
然後,您可以在各種view controllers
中使用它作爲subview
。
第二種方法,您可以創建一個parent class
&繼承此parent class
這兩個類。該父類將包含所有常用功能(如@alinoz所述)。
但單獨的UIView類將只具有功能而不是UI部分。所以我將不得不重新創建UI部分 – user3240770
讓註冊表單視圖的類爲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
}
[視圖控制器遏制](http://www.objc.io/issue-1/containment -view-controller.html) – Abizern
選項1:將通用功能放在不同的類中,並從這兩個視圖控制器中繼承。選項2:將常用功能放在幫助類中,並在2個視圖控制器中使用該類(如果將它們定義爲靜態)或對象。如果你想重新使用GUI設計,你會碰到一個小問題(我還沒有想出如何正確使用Storyboard)。 – alinoz
@Abizern:它只適用於視圖是主視圖,但在我的情況下,要添加的視圖嵌套在內部。 – user3240770