2016-03-20 29 views
0

我有這樣的情況:如何等待容器視圖中的視圖被加載?

我有一個UIViewControllerVC1其中有一個容器視圖。此容器視圖有另一個UIViewController - VC2。我需要設置屬性VC2並且設置後,更新連接到VC2的某些標籤上的文本,如IBOutlet s。我可以通過執行在故事板中創建的具有標識符「segueToVC2」的segue來訪問VC2。在設置了VC1 - PROPERTY1的屬性後,我調用performSegueWithIdentifier方法,即我在PROPERTY1的didSet方法中調用performSegueWithIdentifier。事情是由容器視圖持有的VC2的視圖尚未加載,我連接到VC2的IBOutlets都是零。這會導致我的應用程序崩潰。

我該如何解決這個問題?

在此先感謝。

+0

如果您在故事板中設置了容器視圖,則只需在'prepareForSegue'中設置VC2,而無需手動調用'performSegue'即可。 –

回答

0

好吧,我已經成功地解決了問題,我一直在處理VC1以同樣的方式: 我直接從AppDelegate設置VC2所需的財產和一切工作正常。

0

我不確定IBOutlets是什麼,還沒有編程Objective-C。 另外,我不確定爲什麼你需要使用performSegueWithIdentifier,因爲你告訴我們VC2包含在容器視圖中。

VC1中的容器視圖使用嵌入式segue鏈接到VC2。 您可以在prepareForSegue和您的viewDidLoadviewWillAppear中獲得VC2的副本,您可以設置VC2的屬性。

這就是我如何在Xamarin.iOS上完成它。 祝你好運。

0

您必須在viewDidLoad方法中設置VC2中IBOutlets的屬性(文本,顏色等)。現在要從VC1設置這些值,您應該在VC2上創建一些屬性以保存要從VC1傳遞到VC2的數據。然後,在VC1中的'prepareForSegue'方法中,在VC2上設置所需的屬性。然後在VC2 viewDidLoad中使用這些屬性更新您的IBOutlet。

相關問題