Ijo*_*chy 5 macos cocoa nsview xcode4
当我在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];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
960 次 |
| 最近记录: |