如何从操场内的笔尖获取视图?

yba*_*kos 2 xcode cocoa nib nsbundle swift

在典型的Xcode项目中,您可以从这样的笔尖获取视图:

    var objects: NSArray?;
    NSBundle.mainBundle().loadNibNamed("ExampleView", owner: nil,
                                       topLevelObjects: &objects)
    var view :NSView
    for obj in objects! {
        if (obj.isMemberOfClass(NSView)) {
            view = obj as NSView
        }
    }
    // view is now the NSView object obtained from the nib. Yay.
Run Code Online (Sandbox Code Playgroud)

但是,如果我在同一个Xcode项目中创建一个游乐场并尝试获取视图,则上述代码将失败.实际上,loadNibNamed:owner:topLevelObjects:返回false,我们知道加载nib失败了.

即使我创建一个独立的游乐场,并将.xib文件放在Resources目录中,loadNibNamed:owner:topLevelObjects:仍然返回false.

为什么我不能loadNibNamed:owner:topLevelObjects:用来从操场上访问nib文件?这样做的正确方法是什么?

yba*_*kos 6

我犯的错误是将.xib而不是.nib放在Resources目录中.一旦我将正确的文件(.nib文件,durp)放在Resources目录中,我确实可以访问该视图.

  • 生成'.nib'文件`ibtool --compile View.nib View.xib` (5认同)