0

nibファイル内のトップレベルオブジェクトのロード順序はランダムですか、それとも決定できますか?InterfaceBuilderに置いた順序でオブジェクトをロードすると思いました。しかし、それが常に当てはまるとは限りません。

Interface Builderに似たインスペクタービューを作成したかったのですが、異なるセクションの背景色が交互になっています。これを行うには、セクションをペン先のトップレベルのビューとして並べ替え、読み込み順序に従って色を付けます。

4

1 に答える 1

5

ドキュメントによると、ロード順序は未定義です。

nib-loadingコードがオブジェクトのawakeFromNibメソッドを呼び出す順序は保証されていません。OS Xでは、Cocoaはファイルの所有者のawakeFromNibメソッドを最後に呼び出そうとしますが、その動作を保証するものではありません。ロード時にnibファイル内のオブジェクトをさらに構成する必要がある場合、そのための最も適切な時間は、nib-loading呼び出しが戻った後です。その時点で、すべてのオブジェクトが作成され、初期化され、使用できるようになります。

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.htmlを参照してください

とにかく、視覚的なレイアウトを決定するために読み込み順序のようなものに依存することは、非常に堅牢ではないアイデアのように思えます。代わりに、NSTableView / UITableViewを使用します。これにより、レイアウト、行の色の変更などがすべて実行されます。(Macでは、おそらくビューベースのテーブルビューが必要です)。何らかの理由でカスタムソリューションが必要な場合は、ビューをコードに動的にロードして追加し、親でのビューの順序と位置を完全に制御できます。

于 2012-06-03T20:57:56.973 に答える