[英]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.