让一个 VC 出现在另一个 VC 中

Posted

技术标签:

【中文标题】让一个 VC 出现在另一个 VC 中【英文标题】:Getting a VC to appear inside another VC 【发布时间】:2016-07-27 10:03:21 【问题描述】:

我有 2 个视图控制器。

VC1 里面有 2 个视图。

我想让 MenuUIVC 出现在我属于(子)VC1 的视图之一中。

我在 VC1 中尝试了这段代码,但没有成功。

MenuUIVC * menuViewVC = [[MenuUIVC alloc] init];
menuUIView = menuViewVC.view;

我希望能够在 VC1 的子视图 (menuUIView) 中看到 MenuUIVC。我将所有 IBOutlets 都连接到了故事板上。

【问题讨论】:

看看 ios 中的容器视图 - developer.apple.com/library/ios/featuredarticles/… 容器视图是添加视图控制器作为子视图控制器的更好选择。 您可以使用容器视图来实现这一点。查看spin.atomicobject.com/2015/10/13/… 和developer.apple.com/library/ios/featuredarticles/…。希望这对您有所帮助。 adding view controller as child view in ios的可能重复 【参考方案1】:

您可以使用容器视图在视图控制器中获取视图控制器。并且,您可以通过 prepareForSegue() 方法获取对它的引用。

描述链接:

    iOS Container View The Easy Way to Switch Container Views in iOS

【讨论】:

【参考方案2】:

如果你使用的是 UIView,那你为什么不使用

[menuUIView addSubview:menuViewVC.view];

另一个选择是使用 childviewcontrollers。 例如,请参阅这些链接:-

    adding view controller as child view in ios Add child view controller to current view controller

使用容器或子视图控制器,为您提供了使用视图控制器属性的完整选项,而您在 UIView 中无法获得。 例如,您可以定向委托方法,而不能直接在 UIView 类中使用。 希望对您有所帮助。

干杯 桑杰

【讨论】:

【参考方案3】:

如果您想使用 IBOutlets 和 storyborad 进行容器视图,您可以使用它。 但如果您想使用代码来完成,请按照以下步骤操作:

    初始化并创建父视图控制器。 然后将所需的子视图添加为带有负框架的子视图。 现在可以在需要时使用 UIView 动画更改框架。 & 请在子视图以外的部分屏幕上添加点击手势识别器,以将其移回初始位置。

【讨论】:

以上是关于让一个 VC 出现在另一个 VC 中的主要内容,如果未能解决你的问题,请参考以下文章

如何在第二个 VC 中使用第一个 VC 的方法?

使用 presentViewController 方法在另一个 VC 中设置属性

如何在不知道新的 VC 的情况下将 ViewController 呈现在另一个之上?

使用一个视图控制器从用户那里获取文本,将该值添加到数据库并在另一个 VC 中显示它[关闭]

为啥在 VC++ 调试器上计算表达式时会出现“成员函数不存在”错误?

将 UITableViewCell 引用传递给其他 VC 使其消失