在nib中加载顶级对象的顺序

Dru*_*erB 0 cocoa objective-c interface-builder nib appkit

nib文件中顶级对象的加载顺序是随机的还是可以确定的?我认为它会按照我将它们放入Interface Builder中的顺序加载对象.但似乎并非总是如此.

我想创建一个类似于Interface Builder的检查器视图,其中不同的部分具有交替的背景颜色.我计划通过在我的笔尖中将这些部分作为顶级视图进行排序,然后根据加载顺序对它们进行着色.

小智 5

根据文档,加载顺序是未定义的:

无法保证nib加载代码调用对象的awakeFromNib方法的顺序.在OS X中,Cocoa最后尝试调用File的Owner的awakeFromNib方法,但不保证该行为.如果你需要在你的笔尖文件进一步在加载时配置的对象,最合适的时候这样做是你的笔尖加载调用返回后.此时,所有对象都已创建,初始化并可供使用.

请参阅https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html

而且,无论如何,依靠加载顺序来确定视觉布局似乎是一个非常不健全的想法.我会使用NSTableView/UITableView,它将为您完成布局,交替行颜色等.(在Mac上,您可能需要基于视图的表视图).如果由于某种原因需要自定义解决方案,请在代码中动态加载和添加视图,您可以完全控制其在父级中的顺序和位置.