【问题标题】:Hide or temporarily remove a child ViewController from a parentViewController?从 parentViewController 隐藏或临时删除子 ViewController?
【发布时间】:2013-08-26 21:21:52
【问题描述】:

(询问和自我回答,因为我在 Google 上没有找到任何点击,但最终通过反复试验设法找到了解决方案)

在 iOS 5 和 6 中,Apple 添加了一些丑陋的 hack 以使 InterfaceBuilder 支持“嵌入式”视图控制器。他们没有记录这些是如何工作的,他们只提供了代码级示例,并且只涵盖了有限的案例子集。

特别是,我希望有一个有时隐藏的嵌入式视图控制器 - 但如果你尝试明显的方法它不起作用(你会留下一个白色矩形):

childViewController.view.hidden = TRUE;

【问题讨论】:

    标签: ios uiviewcontroller uistoryboard container-view


    【解决方案1】:

    你为什么不直接为你的容器视图创建一个 IBOutlet 并做

    self.containerView.hidden = YES;
    

    【讨论】:

      【解决方案2】:

      他们是如何做到的,这似乎是自 iOS 2 以来工作的手动方式的一种变体(但仅支持视图,不支持视图控制器) - 有一个真实的、真正的 UIView 嵌入到父级中(在源代码示例 - 仅在您使用 InterfaceBuilder 时添加!)。

      所以,如果你这样做:

      childViewController.view.superview.hidden = TRUE;
      

      ...有效!

      此外,与直觉相反,您可以从 viewDidLoad 开始随时调用此方法 - Apple 的“嵌入 segue”hack 在调用 viewDidLoad 之前执行

      因此您可以在启动时执行此操作,以使您的 childViewController 启动时不可见。

      【讨论】:

      • 这些都不是什么大问题。如果您添加一个容器视图并查看它的类,您会发现它只是一个 UIView,并且与任何其他 UIView 一样,它具有默认的白色背景颜色。
      • Apple 的文档对此进行了不同的描述。他们没有提到“额外的” UIView。他们也根本没有记录“嵌入转场”(据我从谷歌搜索可知,它只出现在 WWDC 视频中)。任何无证的东西都让我大吃一惊:)
      • 好吧,我同意这方面的文档确实很少。
      • 如果您通过 IB 添加视图控制器,您实际上会看到 embed segue。
      • @Jonah.at.GoDaddy 是的。你看到了segue。但它不像普通的 Segue 那样工作(参见它在 viewDidLoad 之前触发!)。它需要一个容器视图吗?只有 Xcode/NIB 需要容器视图吗? :(
      【解决方案3】:

      使用这个[self.childviewController setHidden:YES];

      【讨论】:

      • 文档说没有“self.containerView”这样的东西。你从哪里得到这个?
      • childviewController 不是 containerView
      【解决方案4】:

      如果有人需要隐藏/显示所有子视图或对其进行迭代:

      func hideChildrenViews() {
          for view in self.view.subviews {
              (view as! UIView).hidden = true
          }
      }
      
      func showChildViews() {
          for view in self.view.subviews {
              (view as! UIView).hidden = false
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-16
        • 2021-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多