2

メニュービューにロードする必要のある汎用インターフェイス要素を備えたビューコントローラがあります。MenuView.hと呼ばれるカスタムUIViewを作成し、MenuView.mコードを使用してその中のすべてのビューを構築しました。ただし、ビューをより簡単にレイアウトできるように、ビューを.xibファイルに設定したいと思います。

私はnib/xibファイルをカスタムUIViewにロードするために全体について知っていloadNibNamedますが、私が理解していないのは、ロードされたnibにいくつかのIBOutletを接続する方法です。

誰かがこれがどのように行われるかについての指針を持っていますか?

4

1 に答える 1

3

これをする:

  1. xib を作成します。
  2. ファイルの所有者を、コントローラーとして機能させたいクラスとして設定します (通常はUIViewContollerサブクラスですが、iOS5 より前では、Apple はUIViewController画面に複数のコントローラーがある場合に使用することをお勧めしません)。(このステップは、このクラスを xib に表示して、アウトレットを作成できるようにすることです)。
  3. IBOutlet/IBActionこのクラスでカスタム ビューの を作成します。
  4. そして、 を呼び出すときloadNibNamed:owner:option:に、所有者をこのクラスのオブジェクトとして渡します。

すなわち

UIView *view = [[[NSBundle mainBundle] loadNibNamed:@"CustomXib" owner:<customClassobject> option:nil] objectAtIndex:0];

そしてそれをどこかで使用するには:

[someView addSubview:view]

もう 1 つの方法は、カスタム ビュー コントローラーを作成し、ビュー コントローラーを使用してビューにアクセスすることです。

  • カスタム ビュー コントローラー (MyViewCon など) をファイルの所有者として保持しながら、上記の手順 1 ~ 3 を繰り返します。また、コントローラーのビュー参照を xib ビューに接続する必要があります。

次に、を使用する代わりにloadNibNamed...、View Controller を初期化します。すなわち

MyViewCon *myVC = [[MyViewCon alloc] initWithNibName:@"CustomXib"];

次に、ビューを使用する必要がある場合はどこでも使用しますmyVC.view。たとえば、

 [someview addSubview: myVC.view];

更新

子ビューと親ビューのファイルの所有者と同じUIViewControllerサブクラスを使用している場合、同じクラスの 2 つの異なるオブジェクトになり、同じクラスでアクションを実行すると同じ変数が異なる値を示す可能性があるため、混乱を招く可能性があることに注意してください。シーン。

シーンの複数のコントローラーに関する設計の観点からの詳細については、こちらを参照してください。

于 2013-03-13T09:23:49.280 に答える