これをする:
- xib を作成します。
- ファイルの所有者を、コントローラーとして機能させたいクラスとして設定します (通常は
UIViewContoller
サブクラスですが、iOS5 より前では、Apple はUIViewController
画面に複数のコントローラーがある場合に使用することをお勧めしません)。(このステップは、このクラスを xib に表示して、アウトレットを作成できるようにすることです)。
IBOutlet/IBAction
このクラスでカスタム ビューの を作成します。
- そして、 を呼び出すとき
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 つの異なるオブジェクトになり、同じクラスでアクションを実行すると同じ変数が異なる値を示す可能性があるため、混乱を招く可能性があることに注意してください。シーン。
シーンの複数のコントローラーに関する設計の観点からの詳細については、こちらを参照してください。