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

时间:2015-08-20 09:20:59

标签: swift nsview nsviewcontroller

背景信息:我有NSTableView个自定义NSView个单元格(PreviewCell : NSView),并希望将此类PreviewCell(及其自定义笔尖)添加为外部子视图该表也是如此。

项目设置:

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

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

表格显示正确。我将Preview控制器与Nib添加到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)

视图根本不可见。如果我将其添加到窗口的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)

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

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

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

显然,在子视图上设置setAutoresizingMask是一个坏主意。 删除自动调整大小后,子视图(在我的情况下为Preview)已正确显示。