Swift 中带有拆分视图的源列表边栏实现

Source List Sidebar implementation in Swift with split view

我在尝试为应用程序实现侧边栏导航时遇到问题。考虑到源列表在 OS X 应用程序中如此突出,并且 Apple 的人机界面指南将源列表称为在应用程序内导航的理想方式,我很惊讶没有更多可用资源(好吧反正我也找不到)。我能找到的与拆分视图相关的所有内容似乎都指的是 ios。

我对实现源列表的内容没有任何问题,当涉及到基于源列表中的 selection 的视图交换时,我的问题就出现了。

本质上,我希望用户 select 在拆分视图的主要侧的源列表中选择一个选项,然后在拆分视图的详细侧加载相应的视图。我不确定是否有一种简单的方法可以使用故事板来实现类似的东西,例如 tabview 控制器?如果没有,是否有人能够在 swift 中建议一个基本的实现来帮助我入门?我不确定从视图交换方面从哪里开始。

提前致谢。

编辑:

根据我之前的 post,我在下面包含了视图交换的基本实现,但是当视图被替换时,之前的视图仍然存在。除了我的问题之外,如何在添加新视图之前删除以前的视图?我的代码行 removeFromSuperView() 似乎导致了重大问题!

import Cocoa

class AppController: NSObject {

@IBOutlet weak var ourView: NSView!
var ourViewController: NSViewController!


let kFirstViewTag = 0
let kSecondViewTag = 1
let kFirstView = "FirstViewController"
let kSecondView = "SecondViewController"



@IBAction func changeView(sender: NSPopUpButton) {
    let tag = sender.selectedTag()
    self.changeViewController(tag)


}

func changeViewController(tag: Int){

    ourViewController.view.removeFromSuperview()


    switch tag{
    case kFirstViewTag:
        self.ourViewController = FirstViewController(nibName: kFirstView, bundle: nil)

    case kSecondViewTag:
        self.ourViewController = SecondViewController(nibName: kSecondView, bundle: nil)

    default: print("There was an error with the view controller change")

    }

    ourView.addSubview(ourViewController.view)

}

override func awakeFromNib() {
    self.changeViewController(kFirstViewTag)
}

}

任何对解决我遇到的视图问题的解决方案感兴趣的人,我只是替换了视图,使用以下代码从 superview 中删除:self.ourViewController?.view.removeFromSuperview()

我遇到的问题是由于视图控制器是可选值。我的疏忽。

然后可以通过使用源列表的选择更改 属性 触发视图更改来调整边栏源列表。

如果有人感兴趣,我会在完成后post提供完整的解决方案。