2012-02-09 8 views
1

MonoTouchを使用して単一のビューのipadアプリケーションを作成しました。私は、アプリケーションのためのより多くのスクリーン/ビューを作成したい。そこで、私は現在のソリューションに新しいipadビューを追加しました。これを行うと、xibはソリューションにのみ追加されます(ビューコントローラには対応する.csファイルがありません)。私はIBでxibを設計しましたが、私はそれを既存のView Controllerにどのように追加するかという手掛かりはありません。MonoTouchで異なるビュー/スクリーン/ xibsを使用するには?

私は自分自身を明確にしたいと思いますので、進めてください。

答えて

1

単純な答え:一般的に

は、各XIBのビューコントローラを持っていることになるでしょう。 「iPad View Controller」テンプレートを使用すると、コントローラクラスとその読み込み用のxibファイルが作成されます。ただし、コントローラクラスを手作業で簡単に追加することも、既存のコントローラクラスをコピーすることもできます。

ベースのコントローラクラスは、ロードの作業を行い、XIBを管理する - あなたは基本コンストラクタにXIB名を渡すことで、使用することを教え:

public partial class MyViewController : UIViewController 
{ 
    public MyViewController() : base ("MyXibName", null) 
    ... 

高度な答え

"nib"は、シリアル化されたUIオブジェクトを含むファイルです。 「xib」は単にペン先のXML表現です。あなたのxibsはアプリバンドルをビルドするときにコンパイルされます。アプリのバンドルから直接ペン先をロードするためのAPIは次のとおりです。

NSBundle.MainBundle.LoadNib (xibName, owner); 

XIBの名前は、そのバンドルのリソースIDです - ファイル名が、拡張子なし。

これはペン先をロードし、その中のすべてのオブジェクトをデシリアライズし、すべてのアウトレットをownerオブジェクトに接続します。これはInterface Builderの "File's Owner"オブジェクトとして表示されます。そのタイプをIBで設定してから、アウトレットとアクションにオブジェクトを接続することができます。技術的には、実行時に使用する所有者オブジェクトのタイプは、xib内のオブジェクトと同じ名前のアウトレットとアクションがあり、それらのタイプが互換性がある限り、実際には重要ではありません。

実行時には、nibや所有者オブジェクトに多くの柔軟性があります。たとえば、

  • ビューコントローラは、ベースコンストラクタに異なるnib名を渡すことによって、デバイスタイプに応じて異なるnibをロードできます。ユニバーサルアプリ(iPhone + iPad)に便利です。
  • nibには多くのUIViewが含まれていて、それらを所有者の複数のアウトレットに接続することができます。コントローラをたくさん持たない場合は、単一のコントローラがいくつかのnibを明示的にロードして所有できます。
  • コントローラが異なると、同じペン先をロードできますが、異なるデータをウィジェットにロードする可能性があります。
  • コンセントを持つベースコントローラクラスを持ち、サブクラスがそれらのコンセントに接続できる異なるコントローラクラスに属する多くのnibを持つことができます。
+0

私はまだ失われています。可能であれば、ボタンを押したときに異なるnibをビューコントローラにロードするコードを私に提供することができます。 –

+0

おそらくNavigationViewControllerを持ち、新しいViewControllerをその上にプッシュしたいと思うでしょう。例については、Master-Detailテンプレートを参照してください。 –

+0

2つの新しいビューを開く2つのボタンを持つ基本的なビューコントローラからはどうですか? –

関連する問題