【问题标题】:how to load child view controllers or container views - Swift如何加载子视图控制器或容器视图 - Swift
【发布时间】: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


【解决方案1】:

据我所知,有 2 个容器视图,您希望在第一个分段时看到蓝色视图,如果是这样,您希望在分段第二个时看到绿色视图,解决方案是这样的;

您应该初始化 uivew(按住 ctrl 并将其拖动到蓝色和绿色容器视图的 viewcontroller)(您需要添加 2 个不同的容器视图)并编写

if segmented.selectedIndex == 0 { 

    greenView.isHidden = true
    blueView.isHidden = false

} else if segmented.selectedIndex == 1 {

    greenView.isHidden = false
    blueView.isHidden = true
}

【讨论】:

    猜你喜欢
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    • 2011-09-17
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多