(询问并自我回答,因为我在Google上没有发现任何点击,但最终通过反复试验找到了解决方案)
对于iOS 5和6,Apple添加了一些丑陋的黑客,使InterfaceBuilder支持“嵌入式”视图控制器。他们没有记录这些是如何工作的,他们只提供代码级示例,而且它们仅涵盖了有限的一部分案例。
特别是,我想要一个有时隐藏的嵌入式视图控制器 - 但是如果你尝试使用明显的方法它就不起作用(你会得到一个白色矩形):
childViewController.view.hidden = TRUE;
答案 0 :(得分:5)
为什么不在容器视图中创建IBOutlet并执行
self.containerView.hidden = YES;
答案 1 :(得分:3)
他们是如何做到的似乎是自iOS 2以来手动方式的变化(但它只支持视图,而不是视图控制器) - 有一个真实的,真正的UIView嵌入到父级中(未在源代码示例 - 只有在使用InterfaceBuilder时才会添加它。)。
所以,相反,如果你这样做:
childViewController.view.superview.hidden = TRUE;
......它有效!
另外,违反直觉,您可以随时从viewDidLoad调用此方法 - 在调用 viewDidLoad之前,执行执行Apple的“embed segue”黑客攻击。
所以你可以在启动时执行此操作,让你的childViewController开始不可见。
答案 2 :(得分:3)
使用此[self.childviewController setHidden:YES];
答案 3 :(得分:0)
如果有人需要隐藏/显示所有子视图或迭代它们:
func hideChildrenViews() {
for view in self.view.subviews {
(view as! UIView).hidden = true
}
}
func showChildViews() {
for view in self.view.subviews {
(view as! UIView).hidden = false
}
}