swift - 添加自定义 NSViewController 用 Nib 进行查看

标签 swift nsview nsviewcontroller

背景信息:我有一个带有自定义 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/

相关文章:

swift - 尝试更改 NSTextField 的值时得到 "Unexpectedly found nil while implicitly unwrapping an Optional value"

objective-c - 如何禁用 Mac OS X 上 NSViewController 中的标题栏关闭、最小化和缩放按钮

ios - 解析登录不起作用(快速)

swift - 贝塞尔曲线和b样条弧长算法给我带来了问题

macos - 自定义绘制的 NSView 在编辑的 subview 内重绘整个 View

objective-c - NSView 或 CALayer 的 subview ?

ios - 从两个不同 View 切换多个标签

swift - append 多个 VNCoreMLModel ARKit 和 CoreML

macos - 不透明的 NSWindow 和 WindowServer 性能不佳

macos - NSVIewController 之间的导航