添加带有 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
)就会正确显示。
背景信息:我有一个带有自定义 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
)就会正确显示。