在 NSSplitViewController 中更改视图
Change views inside NSSplitViewController
我正在尝试将我的 Objective-C 和现在提高 Swift 的知识应用于 Mac OS X 的应用程序。陡峭的学习曲线!
我正在尝试根据在 "master view" 上按下的按钮在 "detail view" 中加载具有不同视图的 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
告诉我按下了哪个按钮。然后我试图从 Storyboard 加载到 splitViewItem[1]
各种视图。但是没有运气。谁能指出我正确的方向?即使是一个体面的参考? Google 上似乎没有任何帮助。
谢谢。
由于听起来您有一组可以显示的特定详细信息窗格,因此使用 NSTabViewController
可能是完成此操作的最佳方法。
基本上,您的 NSSplitViewController
有两个 children:主视图控制器和一个 NSTabViewController
。对于每个详细信息窗格,选项卡视图控制器都有自己的 children。由于选项卡视图控制器不应显示其自己的选项卡选择 UI(主窗格正在这样做),因此您可以将 tabStyle
设置为 .Unspecified
。故事板看起来像这样:
您的 MainSplitViewController
还将引用选项卡视图控制器 detailController
。然后在 userDidSelectFunction()
上,您可以将 detailController 的 selectedTabViewItemIndex
设置为相应详细信息窗格的 selectedTabViewItemIndex
。 NSTabViewController
将处理视图转换,包括在窗格之间设置动画(如果设置的话)。
我正在尝试将我的 Objective-C 和现在提高 Swift 的知识应用于 Mac OS X 的应用程序。陡峭的学习曲线!
我正在尝试根据在 "master view" 上按下的按钮在 "detail view" 中加载具有不同视图的 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
告诉我按下了哪个按钮。然后我试图从 Storyboard 加载到 splitViewItem[1]
各种视图。但是没有运气。谁能指出我正确的方向?即使是一个体面的参考? Google 上似乎没有任何帮助。
谢谢。
由于听起来您有一组可以显示的特定详细信息窗格,因此使用 NSTabViewController
可能是完成此操作的最佳方法。
基本上,您的 NSSplitViewController
有两个 children:主视图控制器和一个 NSTabViewController
。对于每个详细信息窗格,选项卡视图控制器都有自己的 children。由于选项卡视图控制器不应显示其自己的选项卡选择 UI(主窗格正在这样做),因此您可以将 tabStyle
设置为 .Unspecified
。故事板看起来像这样:
您的 MainSplitViewController
还将引用选项卡视图控制器 detailController
。然后在 userDidSelectFunction()
上,您可以将 detailController 的 selectedTabViewItemIndex
设置为相应详细信息窗格的 selectedTabViewItemIndex
。 NSTabViewController
将处理视图转换,包括在窗格之间设置动画(如果设置的话)。