Swift 更改NSSplitViewController内的视图

Swift 更改NSSplitViewController内的视图,swift,cocoa,nssplitview,Swift,Cocoa,Nssplitview,我正在尝试将我的Objective-C迁移到Mac OS X的应用程序中,现在正在提高Swift知识。陡峭的学习曲线 我正在尝试加载一个NSSplitViewController,该控制器在“详细视图”中具有不同的视图,具体取决于在“主视图”上按下的按钮(如果愿意)。跟随教程和数小时的搜索让我一无所获 我目前有: import Cocoa class MainSplitView: NSSplitViewController, BlissWindowDelegate { var mas

我正在尝试将我的Objective-C迁移到Mac OS X的应用程序中,现在正在提高Swift知识。陡峭的学习曲线

我正在尝试加载一个
NSSplitViewController
,该控制器在“详细视图”中具有不同的视图,具体取决于在“主视图”上按下的按钮(如果愿意)。跟随教程和数小时的搜索让我一无所获

我目前有:

import Cocoa

class MainSplitView: NSSplitViewController, BlissWindowDelegate {

    var masterViewController: vcMainMenu {
        let masterItem = splitViewItems[0] as! NSSplitViewItem
        return masterItem.viewController as! vcMainMenu
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        masterViewController.delegate = self

    }

    func userDidSelectFunction(function: String) {

        switch function {
        case "app":
            println("You have selected to load the appointment screen")
        case "cust":
            println("You have selected to load the customer screen")
        case "login":
            println("I think I am here and you've clicked login?")
            let detailItem = splitViewItems[1] as! NSSplitViewItem

            // Trying to load the views here ... but no idea how to

        case "admin":
            println("You've clicked admin")
        default:
            println("Nothing here ...")

        }

    }

} 
我正在使用
windowdelegate
告诉我按下了哪个按钮。然后,我尝试从故事板加载到
splitViewItem[1]
各种视图中。但是没有运气。谁能给我指一下正确的方向吗?即使是一个体面的推荐人?谷歌似乎没有任何帮助


谢谢。

因为听起来您有一组可以显示的特定详细信息窗格,所以使用
NSTabViewController
可能是实现这一点的最佳方法

基本上,您的
NSSplitViewController
有两个子项:主视图控制器和
NSTabViewController
。选项卡视图控制器对于每个细节窗格都有自己的子项。由于选项卡视图控制器不应显示其自己的选项卡选择UI(主窗格正在执行此操作),因此可以将
选项卡样式设置为
。未指定
。故事板的外观如下所示:


您的
MainSplitViewController
还将引用选项卡视图控制器
detailController
。然后在
userDidSelectFunction()
上,将detailController的
selectedTabViewItemIndex
设置为相应详细信息窗格的索引
NSTabViewController
将负责视图转换,包括在窗格之间设置动画(如果设置为这样做)。

非常感谢您的想法。这是一个很好的解决方案,我来看看。感谢您花时间进行响应。
MainSplitViewController
如何引用
detailController
?它不是只知道存放
detailController
NSSplitItem
吗。在主/菜单视图控制器中,我使用了
parent?.childViewControllers[1]作为!NSTabViewController
获取对选项卡的引用。
让tabView=parent?.children[1]作为?NSTabViewController?
tabView???。selectedTabViewItemIndex=1
只是语法更新。