ios - 在 iOS 8 中使用 swift 将两个 View 分配给一个容器 View

标签 ios iphone swift uitableview uiviewcontroller

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

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

-导航栏 - 包含分段 Controller 的高度为50的 View (它将在tableVC之间切换) -一个主视图,它将包含我的容器 View - 标签栏

我目前的设置几乎和上面描述的一样。这是一张照片: enter image description here

我最感兴趣的 View Controller 是高亮显示的容器(HomeViewController)。我目前使用的方法是 hacky,因为我目前有 2 个容器 View ,一个在另一个之上,并且它们嵌入了右侧描述的 2 个 TableView Controller (每个容器一个)。

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

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

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

@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
        }
    }

正如我所说,这只会在我的 View Controller 中已经加载的 View 之间切换,其中已经包含数据。

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

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

干杯!

最佳答案

将嵌入的 segue 添加到 NavigationController,将 ViewController 作为 rootViewController 添加到 NavigationController,从 rootViewController 添加任意数量的 segue。要加载 Controller ,您只需重写 segue 类即可在没有导航的情况下进行推送。

class NoAnimationSegue: UIStoryboardSegue {

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

}

enter image description here

关于ios - 在 iOS 8 中使用 swift 将两个 View 分配给一个容器 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31155360/

相关文章:

objective-c - iOs 从 NSURLConnection 接收到的数据为零

php - iOS 到 PDO PHP 和 MySQL

iOS Facebook URL 方案无法在 Facebook 应用程序中打开页面

iphone - 为什么我在发送多个请求时收到此错误(HTTP 错误 400。)?

swift - 完成处理程序在任务完成之前返回

iphone - 在客户端上使用代理对象时在 iOS 上调用 WCF 服务

iphone - MPMoviePlayerController 在 iPhone 应用程序中反向(向后)播放电影不流畅

arrays - 反向 Swift 字典查找

arrays - 如何计算数组的正确索引

iphone - 如何在 iphone 本身上访问我的 iphone 的日志文件