2017-06-20 116 views
0

我有一個mainViewController,我想在其中顯示一個未定義計數的childViewControllers的小網格形式。 childViewControllers是基於數據創建的,因此我無法預先知道它們的數量。看起來,我只能與f.ex互動。如果它保留在mainViewController(f.ex.在聲明的變量)保留的childViewController中的按鈕 - 所以我的問題是,如何保留mainViewController和[x] - childViewControllers的數量之間的引用,而無需聲明它們爲單個變量?如何在不聲明的情況下保留[x] - viewControllers的數量的引用

我試着在childController上創建父變量並將其設置爲mainViewController,但這並不能解決問題 - (如果我單獨聲明每個childController,childViewController中的按鈕只是可用的。)I試圖創建一個childController數組並將其添加到mainViewController中,但這也不起作用。

我不想使用collectionView,因爲會涉及到很多的自定義和動畫,那麼保留這些childViewControllers的正確方法是什麼?

回答

0

如果我理解正確你的問題:

的UIViewController有一個屬性childViewControllers這是一個數組。

您可以閱讀https://developer.apple.com/documentation/uikit/uiviewcontroller實施容器視圖控制器部分,以瞭解如何正確添加子視圖控制器。

然後,你可以使用數組下標,讓你[X]子視圖控制器是這樣的:

myContainerViewController.childViewControllers[x].whateverButton ... 
// or 
let childX = myContainerViewController.childViewControllers[x] 
childX.doSomething() 

childViewControllers陣列在父視圖控制器將保留您的孩子視圖控制器。

編輯:

如果您需要訪問,那麼你必須垂頭喪氣的UIViewController你繼承swift4 link, should be the same for swift3

你垂頭喪氣你這樣的子類的屬性:

if let child = mycontainerVC.childViewControllers[x] as? MySubclassOfUIViewController { 
    child.subclassProperty = 1 // or whatever 
} 
+0

非常感謝! :-)當我嘗試數組解決方案時,我肯定犯了一個菜鳥錯誤,因爲之前我無法讓它工作(對我的childControllers沒有任何反應),但再次嘗試它,它工作得很好,以及信息在關於使用「addChildViewController(_ :)」的文檔中也適用於我。 – PeterAntonsen

相關問題