添加带有 Nib 的自定义 NSViewController 以查看

Add custom NSViewController with Nib to view

背景信息:我有一个带有自定义 NSView 单元格 (PreviewCell : NSView) 的 NSTableView,我想添加这样一个 PreviewCell(带有自定义笔尖)作为table 之外的子视图也是如此。

项目设置:

AppDelegate  [displays MasterviewController]
MasterViewController : NSViewController
MasterViewController.xib  [contains table with Preview.xib rows]

Preview : NSViewController
Preview.xib  [contains PreviewCell]
PreviewCell : NSView

table 显示正确。但是,我在将带有 Nib 的 Preview 控制器添加到 MasterViewController.

时遇到了问题
// in viewDidLoad()
var pinned = Preview(nibName: "Preview", bundle: nil)
self.view.addSubview(pinned!.view)
pinned!.view.frame = CGRect(x: 0, y: 100, width: 600.0, height: 120.0)

视图根本不可见。如果我改为将它添加到 window 的 contentView(在 AppDelegate 中),它会完美地工作:

// in applicationDidFinishLaunching()
var pinned = Preview(nibName: "Preview", bundle: nil)
self.window.contentView.addSubview(pinned!.view)
pinned!.view.frame = CGRect(x: 0, y: 0, width: 600.0, height: 120.0)

仅在 MasterViewController 中添加 PreviewCell(因此不使用笔尖)也可以:

var pinned = PreviewCell(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.table.rowHeight))
self.view.addSubview(pinned)

我做错了什么?

显然,在子视图上设置 setAutoresizingMask 不是一个好主意。 删除自动调整大小后,子视图(在我的例子中 Preview)就会正确显示。