繁体   English   中英

在 Xcode 中显示视图控制器的实例而不会干扰当前的层次结构

[英]Displaying instances of view controllers within Xcode without disturbing the current hierarchy

我正在 Xcode 中生成一个用 swift 编写的应用程序,我已经达到了需要能够实例化视图的开发阶段。 理想情况下,我会更改程序的层次结构以包含“主”或“父”视图,主视图将负责显示提供给它的视图。

实例化其他视图控制器并将实例传递给主视图将是我的目标,但是,我对 Xcode 和 swift 缺乏经验,我不确定如何在不改变整个故事板层次结构的情况下包含主视图。

这是一张图像,用于对当前结构进行可视化描述。

当前层次结构

目的是改变层次结构以包含主/父/主视图,该视图将是一个空的显示项,它将在需要时显示所有视图,理想情况下我会保留选项卡控制方法。

主要也是最重要的是,视图将允许显示、关闭和刷新视图控制器的实例,而不会影响应用程序的其他方面。

代码在这里似乎无关紧要,因为我的观点是由故事板处理的。 在这里对我真正有帮助的事情是简要说明我如何处理新层次结构的实例化。

预先感谢您对此事的任何帮助

视图控制器可以作为一个或多个子视图控制器的自定义父视图控制器,在其自己的视图界面中以任何所需的方式显示它们的视图。


您可以以任何所需的方式实例化视图控制器。 如果你想从故事板中取出一个视图控制器实例(因为你已经在那里设计了它的视图),调用:

https://developer.apple.com/documentation/uikit/uistoryboard/1616214-instantiateviewcontroller

故事板中的视图控制器需要有故事板 ID 字符串,以便您可以识别它。


以这种方式从情节提要中提取视图控制器后,要在界面中显示其视图,您必须执行以下操作:

  1. 家长调用https://developer.apple.com/documentation/uikit/uiviewcontroller/1621394-addchild

  2. 父级捕获视图控制器的view并将其作为父级自己视图的子视图粘贴到界面中。

  3. 家长调用https://developer.apple.com/documentation/uikit/uiviewcontroller/1621405-didmove

两个视图控制器现在处于合法的父子关系中,并且两个视图控制器都可以正常工作。 他们甚至可以互相参考。

如果你想从界面中移除子视图控制器的视图,你必须反转舞蹈:

  1. 父母使用nil参数调用https://developer.apple.com/documentation/uikit/uiviewcontroller/1621381-willmove

  2. 父视图从界面中移除子视图控制器的视图

  3. 父级调用https://developer.apple.com/documentation/uikit/uiviewcontroller/1621425-removefromparent


请阅读主视图控制器文档页面上的“实现容器视图控制器”:

https://developer.apple.com/documentation/uikit/uiviewcontroller

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM