0

要するに、 1 つの XIB ファイルにすべて含まれている UIView のセットから特定の uiview をロードするにはどうすればよいですか? iアウトレット?どうやって?

場合によっては、2 番目のビューではなく最初のビューを表示したい場合や、1 番目のビューではなく 3 番目のビューを表示したい場合があります。それらはすべて同様のUIViewですが、モーダルに表示できるのは1つだけです..ボタンをクリックしたユーザーの操作に応じて、どのUIViewを表示するかはわかっています..しかし、問題は、表示する特定のビューを具体的に選択してアタッチする方法です.それをモーダルに提示します。

詳細には、これは私がこれまでに行ったことです:

こんにちは、TestViewController.xib ファイル内に次のような 3 つのビュー オブジェクトがあります。

1 つの xib ファイルに存在する 3 つのビュー

この xib の「ファイルの所有者」は、TestViewController クラスに接続されています。

実行時に、次のように TeamViewController クラスをプログラムでインスタンス化しています。

TestViewController *tVController = [[TestViewController alloc] initWithNibName:@"TestViewController" bundle:nil];

次に、ビューを次のようにモーダルに表示します。

    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:ls];
    [nav setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
    [nav setModalPresentationStyle:UIModalPresentationFormSheet];
    nav.navigationBar.tintColor = [UIColor blackColor];
    [nav setNavigationBarHidden:YES]; 

    [rootViewController.navigationController presentModalViewController:nav animated:YES];
    nav.view.backgroundColor = [UIColor blackColor];
    self.modalNavController = nav;
    [nav release];
    [tVController release];

これはすべて機能し、ビューがロードされますが、デフォルトではビューの 1 つだけが自動的にロードされます。私がやりたいことは、TestViewController をインスタンス化するときに特定の UIView のみをロードする方法を知ることができるようにすることです。これを達成するために私が考えた1つの方法は、それらのためにIBOutletsを作成し、どのビューがそのように表示されるかを管理することでしたか? そのため、クラス内に 3 つの IBOutlets を作成し、それらを Xib のファイル所有から各 UIView に接続しました。これで無事つながりました。

IBOutlet *view1;
IBOutlet *view2;
IBOutlet *view3;

私はこのようなことをすることができます:

[self.view addSubview:view2]; 

これによりview2が適切に表示されますが、TestViewControllerをインスタンス化するときに理想的であるため、モーダルビューでは表示されません。

私のこの目標を達成する方法を教えてくれる人はいますか?

ありがとう

4

1 に答える 1

1

各ビューに一意のタグを付けてから、viewWithTag:

-編集-

これが機能するために、あなたはする必要があるかもしれませんNSNib *n = [[NSNib alloc] initWithNibNamed:bundle:]

于 2012-06-27T18:55:37.637 に答える