NSView 的子视图的顺序是不是有保证?

Posted

技术标签:

【中文标题】NSView 的子视图的顺序是不是有保证?【英文标题】:Is the ordering of subviews of NSView guaranteed?NSView 的子视图的顺序是否有保证? 【发布时间】:2013-03-08 16:56:42 【问题描述】:

使用[[NSView subviews] objectAtIndex:]时,能否保证每次都选择相同的视图?

背景:我正在使用IKScannerDeviceView 并想隐藏文件格式选择。我使用以下代码执行此操作:

NSView *parameterView = [[[[_scannerView subviews][0] subviews][1] subviews][0] subviews][0];

NSView *v1 = [parameterView subviews][37];
[v3 setHidden:YES];
NSView *v2 = [parameterView subviews][38];
[v4 setHidden:YES];

在测试中,这总是隐藏正确的视图,但我能保证总是这样吗?

【问题讨论】:

【参考方案1】:

如果您自己构建层次结构并在每次确定顺序时都以相同的方式进行。

显然,无法保证您无法控制的未知视图层次结构的顺序。在IKScannerDeviceView 的情况下,视图层次结构应被视为私有。

【讨论】:

以上是关于NSView 的子视图的顺序是不是有保证?的主要内容,如果未能解决你的问题,请参考以下文章

将 xib 视图初始化为另一个 NSView 的子视图

Cocoa NSView 子视图阻止拖放

隐藏另一个子视图类的子视图

无法关闭在 Interface Builder 中创建的 NSView 实例的剪辑

根据最大的子视图使用自动布局调整超级视图的大小

Mac - NSView不能保证subview的z轴顺序