我正在尝试将我的目标C迁移到MacOSX的应用程序中,现在我正在改进快速知识。陡峭的学习曲线!
我尝试在“详细视图”中加载具有不同视图的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 ...")

        }

    }

}

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

最佳答案

因为听起来您有一组特定的细节窗格可以显示,所以使用NSTabViewController可能是实现这一点的最佳方法。
基本上,您的NSSplitViewController有两个子项:主视图控制器和NSTabViewController。对于每个细节窗格,选项卡视图控制器都有自己的子级。因为选项卡视图控制器不应该显示自己的选项卡选择UI(主窗格正在这样做),所以您可以将tabStyle设置为.Unspecified。故事板看起来像这样:
您的MainSplitViewController还可以引用选项卡视图控制器,detailController。然后在userDidSelectFunction()上,将detailController的selectedTabViewItemIndex设置为相应的详细信息窗格。NSTabViewController将负责视图转换,包括设置窗格之间的动画。

10-08 09:32