繁体   English   中英

在 iOS 8 中使用 swift 将两个视图分配给单个容器视图

[英]Assigning two views to a single Container View using swift in iOS 8

我正在尝试使用 Interface Builder 将两个视图控制器分配给一个容器视图。 我尝试这样做,但是每当我尝试将第二个视图控制器“嵌入”到我的容器视图时,它不会向其中添加另一个 VC,它只是替换已经嵌入的那个。

最终,我的主要目标是拥有一个包含以下元素的屏幕(按顺序,从上到下):

- 导航栏 - 高度为 50 的视图,包含分段控制器(将在 tableVC 之间切换) - 主视图,其中将包含我的容器视图 - 选项卡栏

我目前的设置几乎如上所述。 这是一张图片:在此处输入图片说明

我最感兴趣的视图控制器是带有突出显示的容器(HomeViewController)。 我目前使用的方法是 hacky,因为我目前有 2 个容器视图,一个在另一个之上,并且它们嵌入了右侧描绘的 2 个表视图控制器(每个容器一个)。

我不太喜欢这种方法,因为每当主 VC(主视图控制器)被实例化时,两个容器都会被实例化,因此默认情况下会进行 2 个网络调用来加载它们的内容,这可能会降低设备的速度,并且可能会使用比需要更多的内存。

理想情况下,我会加载映射到分段控件之一的表视图控制器的内容。 然后,每当我转到分段控件中的第二个按钮(并且可能取消分配/摆脱其他 VC)时,我都会有一种机制以某种方式实例化第二个表视图控制器,依此类推。 或者以某种方式能够在我的 HomeViewController 内的一个区域(视图)中的 2 个或多个视图控制器之间显示/交替。

目前我有这个简单的代码,可以在我的 HomeViewController 中的容器视图之间切换(隐藏和显示):

@IBAction func segmentChanged(sender: AnyObject) {
        switch segmentedControl.selectedSegmentIndex{
        case 0:
            println("index1 selected")
            containerView1.hidden = false
            containerView2.hidden = true
            break
        case 1:
            println("index2 selected")
            containerView1.hidden = true
            containerView2.hidden = false
            break
        default:
            containerView1.hidden = false
            containerView2.hidden = true
            break
        }
    }

正如我所说,这只在我的视图控制器中已经加载的视图之间切换,其中已经有数据。

我只是想看看我尝试编写的代码是否可行,或者我是否真的以正确的方式解决了问题,尽管我怀疑我这样做了。

感谢您阅读我的帖子并提前提供建议。

干杯!

向 NavigationController 添加嵌入 segue,将 ViewController 作为 rootViewController 添加到 NavigationController,从 rootViewController 添加任意数量的 segue。 要加载控制器,您只需覆盖 segue 类即可在没有导航的情况下推送。

class NoAnimationSegue: UIStoryboardSegue {

   override func perform() {
      self.sourceViewController.navigationController?.pushViewController(self.destinationViewController, animated: false)
   }

}

在此处输入图片说明

暂无
暂无

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

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