2015-08-23 145 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

不想使用隐藏的视图,因为这些视图已加载,但只是从用户隐藏。这占用了内存,并不理想 –

相关问题