I'm trying to migrate my Objective-C and now improving Swift knowledge to an application for Mac OS X. Steep learning curve!
I'm trying to load a NSSplitViewController
with different views in the "detail view" depending on buttons pressed on the "master view" if you will. Following tutorials and searching for hours has led me to nothing.
I currently have:
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 ...")
}
}
}
I'm using BlissWindowDelegate
to tell me which button was pressed. I am then trying to load into the splitViewItem[1]
various views from a Storyboard. But having no luck. Can anyone point me in the right direction please? Even for a decent reference? Nothing on Google is seeming to help.
Thanks.
Since it sounds like you have a specific set of detail panes that can be shown, using an NSTabViewController
is probably best way to accomplish this.
Basically, your NSSplitViewController
has two children: the master view controller, and a NSTabViewController
. And the tab view controller has its own children for each of the detail panes. Since tab view controller shouldn't present its own tab selection UI (the master pane is doing that), you would set the tabStyle
to be .Unspecified
. The storyboard would look something like this:
Your MainSplitViewController
would also have a reference to the tab view controller, detailController
. Then on userDidSelectFunction()
, you would set the detailController's selectedTabViewItemIndex
to be that of the corresponding detail pane. NSTabViewController
will take care of the view transition, including animating between the panes if setup to do so.
来源:https://stackoverflow.com/questions/30720730/change-views-inside-nssplitviewcontroller