使用拆分视图在Swift中实现源列表边栏实现

时间:2015-10-25 00:04:16

标签: macos sidebar nssplitview pxsourcelist nssplitviewcontroller

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

我对实现源列表的内容没有任何问题,在基于源列表中的选择进行视图交换时出现了我的问题。

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

提前致谢。

编辑:

继我之前的帖子之后,我在下面列出了视图交换的基本实现,但是当替换视图时,前一个视图仍然存在。除了我的问题,如何在添加新视图之前删除以前的视图?我的代码行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)
}

}

1 个答案:

答案 0 :(得分:0)

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

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

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

如果有人有兴趣,我会在完成后发布完整的解决方案。