【问题标题】:Assigning two views to a single Container View using swift in iOS 8在 iOS 8 中使用 swift 将两个视图分配给单个容器视图
【发布时间】:2015-09-18 06:12:24
【问题描述】:

我正在尝试使用 Interface Builder 将两个视图控制器分配给一个容器视图。我尝试这样做,但是每当我尝试将第二个视图控制器“嵌入”到我的 Container View 时,而不是向其中添加另一个 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
        }
    }

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

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

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

干杯!

【问题讨论】:

    标签: ios iphone swift uitableview uiviewcontroller


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多