nib文件中顶级对象的加载顺序是随机的还是可以确定的?我认为它会按照我在 Interface Builder 中放入对象的顺序加载对象。但情况似乎并非总是如此。
我想创建一个类似于 Interface Builder 的检查器视图,其中不同的部分具有交替的背景颜色。我计划通过在我的笔尖中将这些部分排序为顶级视图,然后根据加载顺序对它们进行着色来做到这一点。
nib文件中顶级对象的加载顺序是随机的还是可以确定的?我认为它会按照我在 Interface Builder 中放入对象的顺序加载对象。但情况似乎并非总是如此。
我想创建一个类似于 Interface Builder 的检查器视图,其中不同的部分具有交替的背景颜色。我计划通过在我的笔尖中将这些部分排序为顶级视图,然后根据加载顺序对它们进行着色来做到这一点。
根据文档,加载顺序未定义:
无法保证 nib 加载代码调用对象的 awakeFromNib 方法的顺序。在 OS X 中,Cocoa 尝试最后调用 File's Owner 的 awakeFromNib 方法,但不保证该行为。如果您需要在加载时进一步配置 nib 文件中的对象,最合适的时间是在您的 nib-loading 调用返回之后。此时,所有对象都已创建、初始化并可供使用。
无论如何,依靠诸如加载顺序之类的东西来确定视觉布局似乎是一个非常不可靠的想法。我会改为使用 NSTableView / UITableView,它将为您完成布局、交替行颜色等。(在 Mac 上,您可能需要基于视图的表格视图)。如果您出于某种原因需要自定义解决方案,请在代码中动态加载和添加视图,您可以完全控制它们在父级中的顺序和位置。