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

2023-12-13

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

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

这是一张对当前结构进行直观描述的图像。

Current Hierarchy

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

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

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

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


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


您可以以任何所需的方式实例化视图控制器。如果您希望从情节提要中提取视图控制器实例(因为您已经在那里设计了其视图),请调用:

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. 家长打电话https://developer.apple.com/documentation/uikit/uiviewcontroller/1621381-willmove with a nil范围

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

  3. 家长打电话https://developer.apple.com/documentation/uikit/uiviewcontroller/1621425-removefromparent


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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐