3

ChildViewController クラスを作成してから、そのクラスを使用する nib を作成しました。

次に、いくつかのボタンと、プログラムで変更するテキストを含む BaseView を作成しました。

次に、ImageView の一部のグラフィックとともに背景色が異なるように、baseview の背後に配置できるようにする 2 つのビュー (Boy と Girl) をさらに作成しました。IB で作成したビューに「Boy」と「Girl」という名前を付けました...

しかし、ChildViewController を呼び出しているコードに戻ると、作成したビューにアクセスする方法がわからないため、insertSubView を呼び出すことができます。コードでそれらをインスタンス化する必要がありますか? (おそらく ViewDidLoad で?) nib はロード時にインスタンスを作成しますか?

単一の ViewController に対して複数のビューを処理する方法について混乱しています

編集 =================

@パブロ・サンタクルーズ

あなたの答えは、2 つのペン先と 2 つのビュー コントローラー (ビューごとに 1 つ) があることを前提としています。1 つのペン先と 1 つのコントローラーを使用して、UIView にロードできるかどうかを知りたいです。背景色といくつかのグラフィックを変更したいだけなのに、別のペン先とコントローラーを作成するのはばかげているように思えます。プログラムで UIViews を UIViewController にロードすることはできませんか?

4

3 に答える 3

2

タグ プロパティに値を割り当てることで、UIView にプログラムでアクセスできます。これは、インスペクターの最初のタブ (コマンド 1) の IB で設定できます。

タグの値はデフォルトでゼロに設定されているため、特にアクセスしたい場合は、ゼロ以外の一意の値にします。例: 100。以下のサンプル コードで使用します。

タグが設定されると、タグ付きビューを含む NIB の initWithNibName であった UIViewController で次のコードを使用してビューにアクセスできます。

UIView *aView = [self.view viewWithTag:100];
于 2009-07-23T12:14:17.677 に答える
2

Xcode の App Controller クラスに IBOutlets を追加し、インスペクターの [接続] タブから IB (ctrl を押しながらクリックまたは右クリック) でそれらをオブジェクトにリンクします。

次に、メソッド呼び出しをオブジェクトに送信できるようになります。

Xcode のコードは次のようになります。

@interface AppController : NSObject
{
   IBOutlet Girl girlIvarName1;
   IBOutlet Boy boyIvarName2;
}


@end
于 2009-04-14T22:33:21.313 に答える
0

次のコードを使用して、IBuilderビューのインスタンスを取得できます。

boyViewController = [[BoyViewController alloc] initWithNibName:@"BoyViewController" bundle:nil];
girlViewController = [[GirlViewController alloc] initWithNibName:@"GirlViewController" bundle:nil];

NIBファイル名がBoyViewControllerとGirlViewControllerであると仮定します。これらのインスタンスを使用すると、必要なことは何でもできます。IE、それらを親ビューに追加します(親にaddSubViewメッセージが表示されます)。

于 2009-04-14T22:10:48.060 に答える