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 重写的初始化程序中初始化。但我不知道如何将SubviewControllerssubviews 连接起来,尤其是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 从另一个视图访问一个视图

在 ios 中,视图控制器中移动子视图以处理旋转的正确位置在哪里?

iOS:在 iOS 7 和 iOS 8 上将约束应用于子视图的自动布局差异

ios如何在一个控制器中添加另一个控制器

在另一个视图控制器中添加视图控制器作为子视图

在另一个视图控制器中添加视图控制器作为子视图