【发布时间】:2020-10-12 17:52:29
【问题描述】:
使用分段控制器在它们之间切换时,显示每个容器视图没有问题。我遇到的问题是,每当加载父视图时,蓝色和绿色容器视图也会同时加载。
我希望蓝色与父视图控制器一起加载,绿色仅在我切换分段控件时加载。有什么想法吗?
- 加载是指 viewDidLoad、ViewDidAppear、ViewDidlayoutSubviews 等被调用
override fund viewDidload() {
super.viewdidload()
let child = GreenViewController()
addChild(child)
child.view.frame = frame
view.addSubview(child.view)
child.didMove(toParent: self)
}
我尝试使用上面的代码,但它似乎并没有什么不同,因为一旦父加载,两个子视图控制器的加载仍然会加载
【问题讨论】:
-
我只是想知道你的主视图控制器是两个容器视图吗?因为据我所知,每个容器视图只能有一个嵌入 segue
-
是的,它们是,我使用 2 个不同的容器视图只是为了简单和组织。每个容器视图都有自己的表视图。我想使用我的分段控件轻松地在它们之间转换。但是,我希望蓝色的自动加载,绿色的仅在分段控件切换到“第二”时加载
-
因为你们都在情节提要中声明了,所以它们都将加载然后情节提要启动。您应该只有一个容器视图。最好以编程方式将视图控制器添加到容器视图中,而不是尝试在情节提要中执行此操作。
-
查看 John Sundell 的本教程,该教程解释了如何以编程方式执行此操作(注意他正在将子视图控制器加载到主视图,但很容易切换到将子视图控制器添加到任何查看你想要的)swiftbysundell.com/basics/child-view-controllers
-
还可以看看 Paul Hudson 的这个教程,它是关于协调器模式的,但是关于 Storyboarded 一个从故事板加载视图控制器的协议,有一个非常有趣的地方,即可能对你也有用。 hackingwithswift.com/articles/71/…
标签: swift uicontainerview childviewcontroller