背景信息:我有一个带有自定义 NSView
单元格的 NSTableView
(PreviewCell : NSView
),并且想添加这样一个 PreviewCell
(及其自定义 Nib )也作为表格外部的 subview 。
项目设置:
AppDelegate [displays MasterviewController]
MasterViewController : NSViewController
MasterViewController.xib [contains table with Preview.xib rows]
Preview : NSViewController
Preview.xib [contains PreviewCell]
PreviewCell : NSView
表格显示正确。然而,我在将带有 Nib 的 Preview
Controller 添加到 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)
该 View 根本不可见。如果我将其添加到窗口的 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
(因此不使用 Nib)也可以:
var pinned = PreviewCell(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.table.rowHeight))
self.view.addSubview(pinned)
我在这里做错了什么?
最佳答案
显然,在 subview 上设置 setAutoresizingMask
是一个坏主意。
删除自动调整大小后, subview (在我的例子中为 Preview
)就会正确显示。
关于swift - 添加自定义 NSViewController 用 Nib 进行查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32114328/