2016-06-08 28 views
0

我有三個視圖控制器,每個都在同一個自定義視圖控制器類和一個頁面視圖控制器下。我希望能夠重用這三個視圖控制器,但在子視圖上使用不同的內容。但是,當我嘗試從頁面視圖控制器使用[self.storyboard instantiateViewControllerWithIdentifier:identifier]實例化其中一個視圖控制器時,使用一種方法在緊隨其後的標記中查找子視圖,則返回的子視圖爲空。有沒有什麼方法可以通過編程實例化視圖控制器後通過標記獲取子視圖?以編程方式實例化自定義視圖控制器並通過標記獲取子視圖

回答

1

視圖控制器的視圖在被顯示之前不會被創建。他們不會調用instantiateViewControllerWithIdentifier:

你應該把一個訪問viewDidLoadviewWillAppear,或viewDidAppear視圖控制器的意見碼之後創建。

您不應該嘗試從外部對象操縱視圖控制器的視圖。這違反了封裝原則,這是面向對象設計的一個重要原則。 (它也往往不起作用,因爲你發現了。)

如果你需要通過編程方式對視圖做些事情,你應該向視圖控制器添加一個或多個公共方法,並調用這些方法來請求視圖控制器對其觀點進行調整。

+0

我試着把代碼放在三個視圖方法中,但是它只是改變子視圖,就像你說的那樣,視圖即將被顯示,這不是我正在尋找的,因爲我希望信息在視圖中已經。在顯示視圖之前,我無法對這些子視圖進行調整嗎? – insertawordhere

+0

viewDidLoad在創建視圖控制器的視圖**之後調用,但在顯示**之前調用。這是視圖控制器加載視圖時進行一次性設置的地方。 –

+0

這似乎是不同的滾動瀏覽量,因爲我的子視圖沒有改變,直到我完全滑動到視圖時,使用viewDidLoad。我最終使用viewDidLayoutSubviews,這是我需要的。謝謝您的幫助 – insertawordhere

相關問題