背景信息:我有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)
我在这里做错了什么?
答案 0 :(得分:0)
显然,在子视图上设置setAutoresizingMask
是一个坏主意。
删除自动调整大小后,子视图(在我的情况下为Preview
)已正确显示。