2015-08-23 53 views
0

我是iOS開發新手。在其中一個應用程序屏幕上,我想使用2段的分段控制 - 比如A & B. A & B有不同的UIView。 A有tableview,B有UIImageView和textLabels。我知道我需要使用Container View Controller。但不知道如何。如果我沒有弄錯,視圖控制器只能有一個嵌入式問題 - 那麼我該如何獲得2個UIViews。iOS - 容器視圖控制器Swift

我不知道客觀的C因此很難將類似問題的答案翻譯成很快。也不希望去view.hidden =假&真正的,因爲我從內存的角度來看它不好。

有人可以請一步一步解釋需要做什麼 - 如何使用loadChildViewController,didMovetoParentController等等。故事板的外觀如何。 謝謝

回答

3

一個容器只能有一個嵌入段。你必須創建2個容器,每個容器都有自己的segue。或者您可以從代碼添加子控制器,只需創建UIView,您希望您的內容添加到子視圖控制器並向其添加子控制器的視圖。我創建了sample project以向您展示故事板設置。

@IBOutlet weak var containerView: UIView! 

... 

addChildViewController(controller) 

containerView.addSubview(controller.view) 
controller.view.setTranslatesAutoresizingMaskIntoConstraints(false) 
var constraints = NSLayoutConstraint.constraintsWithVisualFormat("H:|[view]|", options: nil, metrics: nil, views: ["view" : controller.view]) 
constraints += NSLayoutConstraint.constraintsWithVisualFormat("V:|[view]|", options: nil, metrics: nil, views: ["view" : controller.view]) 
NSLayoutConstraint.activateConstraints(constraints) 

controller.didMoveToParentViewController(self) 
+0

感謝這..我看到了這個項目真的很有幫助..一個問題:setTranslates/NSlayoutconstraint位代碼沒有爲我工作..你想要做什麼.. –

+0

如果你不這樣做,視圖會嘗試使用自動調整大小的遮罩來改變自身,這些遮罩不適合自動佈局,並導致自動佈局崩潰和/或不需要的行爲。 – libec

+0

Thant是有道理的..但是對於setTranslatesAutoResizing行中的一些奇怪的原因 - 有一個錯誤「UIView沒有一個名爲」setTranslates ...「的成員... ...不知道那裏的錯誤是什麼..也..在下一行(var constraints)..有一個錯誤的「H:| [查看] |」說,該字符串不能轉換爲「StringLiteralConvertible」 –

0

取代使用容器視圖,爲什麼不只是在IB中設置兩個視圖,然後根據分段控制值設置視圖的隱藏屬性。

請參閱此問題以獲得更深入的解釋。 Question here

+0

不想使用隱藏的視圖,因爲這些視圖已加載,但只是從用戶隱藏。這佔用了內存,並不理想 –

相關問題