【发布时间】:2015-03-30 04:34:22
【问题描述】:
我正在尝试使用 NSView 在 OS X 应用程序中使用 Swift 在 NSViewController 之间导航。
【问题讨论】:
我正在尝试使用 NSView 在 OS X 应用程序中使用 Swift 在 NSViewController 之间导航。
【问题讨论】:
我不确定你想在这里问什么。我建议通过这些链接
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
}
【讨论】:
首先在您的 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 中设置视图之前执行此操作。
【讨论】: