macos – 如何在Interface Builder中删除或替换自动添加的NSView?

概述当我在XCode 4.6中创建一个新的OSX项目,并选择 Cocoa Application模板时,我随后在Interface Builder中看到的是NSWindow,NSMenu(预先填充了一些菜单项),以及NSWindow中的NSView.但是,当我尝试删除NSView并用NSTableView替换它,或者将NSView嵌入到NSScrollView中时,我无法这样做. 自动生成的NSVie 当我在XCode 4.6中创建一个新的OSX项目,并选择 Cocoa Application模板时,我随后在Interface Builder中看到的是NSWindow,NSMenu(预先填充了一些菜单项),以及NSWindow中的NSVIEw.但是,当我尝试删除NSVIEw并用NStableVIEw替换它,或者将NSVIEw嵌入到NSScrollVIEw中时,我无法这样做.

自动生成的NSVIEw在某种程度上是特殊的吗? NSWindow是否要求NSVIEw位于其上,并且不允许其他一些子类(如NStableVIEw或NSCollectionVIEw)成为层次结构中的根视图?我知道我可以在IDentity Inspector中更改类,但这似乎没有做任何事情.这个新手有什么想法或提示吗?

解决方法 这是窗口的内容视图.所有窗口都必须有一个窗口包含其内容,因此默认情况下窗口提供一个窗口.虽然可以在内容视图中使用任何所需的视图(在代码中使用setContentVIEw:方法),但Interface Builder目前不允许您替换它,可能是因为它可能会产生一些意外结果.

除非您有充分的理由替换内容视图,否则最好将视图放在其中.您可以使视图占据整个区域并使用自动调整遮罩或自动布局约束来保持这种方式.这将使您的视图看起来像是内容视图,唯一的区别是视图层次结构的额外级别.

如果您确实想要更改内容视图,可以通过设置自定义类在Interface Builder中完成.但是,正如您所看到的,这并不会使视图像您选择的那样. Interface Builder忽略自定义类以显示视图并选择其设置,并在运行时使用正确的类.这在大多数情况下都是不可取的,因为您无法指定任何设置.

更改内容视图的更好方法是在代码中执行此 *** 作.您可以在Interface Builder中创建一个不在任何窗口中的视图,并在其中构建您的层次结构.然后,在加载nib之后但在显示窗口之前,您的代码将用您自己的代码替换窗口的默认内容视图.例如,如果一个对象具有名为window和newContentVIEw的属性,它可以更改内容视图并显示如下窗口:

[self.window setContentVIEw:self.newContentVIEw];[self.window makeKeyAndOrderFront:nil];
总结

以上是内存溢出为你收集整理的macos – 如何在Interface Builder中删除或替换自动添加的NSView?全部内容,希望文章能够帮你解决macos – 如何在Interface Builder中删除或替换自动添加的NSView?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1002112.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存