iOS:使用另一个控制器处理子视图
Posted
技术标签:
【中文标题】iOS:使用另一个控制器处理子视图【英文标题】:iOS: Handling subview with another controller 【发布时间】:2013-06-27 09:34:25 【问题描述】:我有 MainViewController
和 xib,我在其中创建了两个 subviews
并在 MainViewController
中将它们与 IBOutlets
连接起来。我需要这样,因为MainViewController
处理用户对subviews
的大小调整。
现在我想为子视图创建两个带有 xib 的 ViewController,这样我就可以用内容填充子视图,而无需考虑 MainViewController 对它们做了什么。
怎么做?
我从创建两个 SubviewControllers
开始,在 MainViewController
重写的初始化程序中初始化。但我不知道如何将SubviewControllers
与subviews
连接起来,尤其是subviews
都出现在不止一个xib 中-在主xib 中它们是空的,而在“他们的”xib 中具有内容。
【问题讨论】:
【参考方案1】:要在另一个 viewController(NextViewController
) 中使用 viewController(MainViewController
) 的 UIView,您必须在 NextViewController
中将 MainViewController 添加为 NextViewController
的子项,类似这样..
MainViewController * child = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
[self.view addSubview:child.subView1];
[self addChildViewController:child];
[child release];//for NON ARC
【讨论】:
我这样做了,子视图显示了,但我在主 xib 中看不到它。 “我在主 xib 中看不到它”是什么意思。 正如我在问题中所说的,我想要不止一个 xib。一个是主要的(由 MainViewController 拥有),我在其中向子视图添加约束,而在另一个(由 SubViewController 拥有)中,我想添加子视图的内容。按照您的说明进行操作后,我在主 xib 中看不到子视图,因此无法在 Interface Builder 中添加约束。 在界面生成器中它不能消失。检查这个子视图是否被错误地删除了? 当您通过代码添加视图时,它永远不会影响界面构建器。无法通过编码更改界面生成器或 xib。当您编写代码来更改控件(UIView、UIButton 等)的属性时,属性更改会一直保留到应用程序运行,但 xib 不会反映这些属性更改。以上是关于iOS:使用另一个控制器处理子视图的主要内容,如果未能解决你的问题,请参考以下文章
在 ios 中,视图控制器中移动子视图以处理旋转的正确位置在哪里?