我正在尝试使用NSView在OS X应用程序中使用Swift在NSViewControllers之间导航。
答案 0 :(得分:2)
我不确定你在这里问什么。我建议通过这些链接
Mac OS X Cocoa multiview application navigation
Easy Switching of "View Controllers" in Mac Apps (similar to iOS)
希望这会有所帮助,欢呼。
编辑:
如果您是swift的新手,我建议先通过https://developer.apple.com/swift/。您的方法在swift中看起来如下所示
func switchSubViews(newSubview : NSView) {
//Implementation
}
func prepareViews(){
//Implementation
}
答案 1 :(得分:1)
首先在xib文件中创建自定义视图。这将是各种视图控制器将放置自己的视图的位置。在您将在视图控制器之间导航的代码中,创建一个变量以引用xib文件中的自定义视图;
var masterView : NSView!
返回界面构建器,将自定义视图连接到变量。 masterView现在引用自定义视图,并为您提供更改它的方法。
您可以将视图替换为您希望在任何给定时间处于活动状态的视图控制器的视图。 对于此示例,假设我有三个视图控制器(作为示例);
var pDemog : patientDemographicsController!
var pExams : patientExamsListController!
var pReports : patentReportsViewController!
第一个视图控制器可以设置如下;
masterView.addSubview(pDemog.view)
稍后需要时,您可以使用不同视图控制器的视图替换视图
masterView.replaceSubview(pDemog!.view with: pExams!.view)
再回来;
masterView.replaceSubview(pExams!.view with: pDemog!.view)
或另一个人;
masterView.replaceSubview(pExams!.view with: pReports!.view)
这是改变视图的机制。您可以添加上面引用的动画,但这不是必需的。此外,您应该在视图控制器中准备视图,如下所示; (这只是一个例子,每个视图控制器都需要它)
pDemog.view.setFrameOrigin(NSPoint(x:0, y:0))
pDemog.view.setFrameSize(masterView.frame.size)
在开始在masterView中设置视图之前执行此操作。