2011-01-17 6 views
0

私は、ナビゲーションコントローラ、2つのビューコントローラ、2つのビュー、モデルオブジェクト、およびxibファイルなしで動作するアプリケーションを持っています。ビューはプログラムによって作成されます。今はIBとxibファイルを使って同じアプリを作りたいと思っています。誰かがxibファイルを追加し、それらが置き換えられるプログラムステートメントを削除する方法を説明する書き込みを知っていますか?そうでなければ、xibライブラリ要素とプログラム文の間の等価性について議論するものはありますか?xib以外のアプリをxibを使用するように変換できますか?

なぜ私はこれをしたいですか?私はxibファイルが何をしているのか、プログラムステートメントとのやりとりの仕方を理解しようとしているので、これは良い学習の練習になると思いました。私はそれを試してみましたが、それをコンパイルすることはできませんでした。実際には、教科書の例を除いてxibファイルを使用するたびに、コンパイルされないコードではうまくいかず、コンパイルしてもうまく動作しません。だから私はいくつかの基本的な誤解を持たなければならない。私は、xibファイルが裏で何をしているのか把握する必要があります。彼らは潜在的に非常に強力なようだが、私は彼らが何をしているのか分からないなら、私はそれらを使用しないだろう。

スタックオーバーフローのどこかで、コンパイルされたビュー(またはそのようなもの)のシリアル化されたバージョンがあります。私は概念的に理解しています。私はPythonのピクルスファイルに詳しい。しかしそれは実際にはあまり説明しません。

答えて

1

nib/xibには、オブジェクトの作成と接続に必要な情報が含まれています。基本的には、それに含まれるオブジェクトのインスタンス変数とクラス情報が含まれています。ロードするには、UINibクラス(Mac OS XではNSNib)またはNSBundle loadNib ...メソッドを使用します。 NSBundleのメソッドは使いやすく、ペン先を複数回ロードしない限り、それらを使用することをお勧めします。 iOSの場合、通常は[[NSBundle mainBundle] loadNibNamed:@"NibNameWithoutExtension" owner:self options:nil];を使用します。所有者はselfである必要はありません。これは、IBの "File's Owner"オブジェクトによって表されるオブジェクトであり、そのオブジェクトに対して行われたすべての接続を受け取ります。オプションパラメータは、ペン先のトップレベルオブジェクトを取得するために使用できますが、通常はアウトレットを代わりに使用します。ペン先がロードされると、その内部のオブジェクトが(initWithCoder :)を使用して割り当てられインスタンス化され、セッターメソッドを使用して接続が作成されるか、インスタンス変数が直接設定されます。

関連する問題