【发布时间】:2013-10-13 14:33:08
【问题描述】:
如果这更像是一个最佳实践/您的意见想要的问题,我深表歉意,但我什至不确定这件事是否受支持,过去几个小时在 Google 上产生的有用见解很少。无论如何。
我有一个视图控制器,其中有一些控件需要保持不变,还有一些其他控件需要根据这些“固定”控件的状态进行更改。我认为这可能是视图容器的完美工作:我可以设计任意数量的具有不同控件和内容的不同视图控制器,然后我可以在它们之间切换,将它们放置在视图容器中。
所以我设置了整个东西,自动布局和所有附件,布局东西工作(这意味着我已经做了一些非正统的测试,确认如果我调整视图容器的大小,所有其他“固定" 视图相应地移动。我对此非常满意。
除了似乎没有办法直接从情节提要中同时嵌入多个视图控制器并让包含(外部、超级等)视图控制器执行适当的转场。好的,那么,让我们以编程方式进行,这就是我所知道的最好的地方。
我尝试了一些令人难以置信的愚蠢代码,比如
for(UIViewController *vc in [self childViewControllers]) {
// I know, I'm just prototyping here...
[vc.view removeFromSuperview];
[vc removeFromParentViewController];
}
UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"B_Screen"];
[self addChildViewController:vc];
[_containerView addSubview:vc.view];
但_containerView 似乎没有适当调整大小。这可能是因为 che 内容视图从最后一个视图到容器视图底部都有一个“大于或等于”约束,所以如果我的原始内容视图比我用 @ 实例化的内容视图更高或更短987654323@,_containerView 会保持原来的大小。
在这一点上,我什至会感谢 RTFM,只要您能指出正确的手册(是的,我已经阅读了“iOS 视图控制器编程指南”(虽然我可能遗漏了一些内容,所以请随意打我的脸。
一旦整个工作正常,我想设置花哨的动画,比如淡出/淡入或类似的东西,但我想我可以自己做。
编辑:仔细检查后,似乎发生了两件事:内容视图被正确替换,但它并没有严格地“拥抱”其内容,这意味着在视图的底部,位于其底部和“最后一个”视图之间。然而,这很明显,因为我在内容视图的底部和最后一个包含的视图的底部之间有一个约束,它是“大于或等于”类型,这意味着 20 是好的,15不好,但是 200 和 20 一样好。但是,如果我将它设置为更严格的东西,比如适当的“相等”,自动布局就会到处抱怨存在冲突的约束。这很可能是 AL 的“错误”(或功能,听起来像预期的行为)。
似乎发生的第二件事是容器视图底部与它下方属于“外部”容器的“第一个”视图之间的垂直间距约束被静默破坏(AL 什么也没说在控制台中,就像它必须打破约束或类似的东西一样),这意味着容器视图只会覆盖任何应该被向下移动的东西。我在滚动视图中,所以我并不关心我的界面有多高。
【问题讨论】:
标签: ios uiviewcontroller