问题可能是几个较小的问题,但总的来说,我真的很难理解构建我的Swift应用程序的NSWindow / Views / ViewControllers的“最佳实践”。有人可以告诉我这样做的“正常方式”是什么?
我正在构建一个包含一个窗口的应用程序,其中包含一个拆分视图。左侧拆分将包含一个源列表,右侧将在几个详细视图之一之间切换。我曾经想过一个非常常见的场景。
我的目标是OS X 10.10+,我希望将ViewControllers用于我应用中的重要视图。我并不热衷于使用故事板,因为我仍然在学习自己的方式,而且在这一点上它们似乎有点“神奇”。
我尝试了什么:
MainWindowController.xib
内直接在IB中构建我的所有观点。我很快得到了一个膨胀的MainWindowController.swift
,因为它包含了我的所有代码(例如,它是我的源列表的委托和数据源)我决定将所有内容拆分为NSViewControllers,但是:
MainWindowController.xib
当我继续将它全部拆分为多个XIB和相应的视图控制器(由于上述原因在代码中创建我的NSWindow)时,我得到了一些方法但注意到我的拆分视图不再有分隔符。我的研究表明,如果你对NSSplitView进行子类化会发生这种情况,但我认为我没有这样做(至少不是故意的)。
class AppDelegate: NSObject, NSApplicationDelegate {
var window: NSWindow?
func applicationDidFinishLaunching(aNotification: NSNotification) {
let splitViewController = CMSplitViewController()
let window = NSWindow(contentViewController: splitViewController)
window.makeKeyAndOrderFront(self)
self.window = window
}
和
class CMSplitViewController: NSSplitViewController {
override var nibName: String? {
return "CMSplitViewController"
}
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
}
}
...其中CMSplitViewController.xib
只包含一个NSSplitView(当然还有子视图),从对象库拖入IB。