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