0

私は本当に単純なことをしようとしています.アプリ全体のメインXibファイルと小さなビュー用の別のXibファイルがあります。

小さなビュー (「additionalView.xib」と呼ばれる Xib) を最初の Xib (「ViewController.xib」) に表示したい。

「ViewController.m」で成功しましたが、もっと欲しい - 「additionalView.m」からやりたい

私が作成した「openView:」というメソッドが「additionalView.m」にあり、次のようになります。


-(IBAction)openView:(id)sender

{

  ViewController *vc = [[ViewController alloc] init];

  NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"additionalView" owner:self options:nil];    

  UIView *nibView = [nibObjects objectAtIndex:0];

  [vc.view addSubview:nibView];

}

メソッドが呼び出され、行がデバッガーによって読み取られていますが、何も起こりません。クラッシュなし - エラーなし - 大きなビューの小さなビューはありません。

何故ですか?

最後の行がおそらくすべてを台無しにしていることは知っていますが、正しく配置する方法がわかりません。

4

3 に答える 3

1

試す

    [self.view addView:view.vc];

ただし、ここで構造をどのように表示しているのかわかりません。-(IBAction)openView:(id)sender は「additionalView.m」にあると言いますが、それはメインのView Controllerではありませんよね?メインコントローラーでこれを行う必要があるため、基本的に openView: メソッドを ViewController.m に移動します。

また、通常、ビューごとに個別のビュー コントローラーが必要です。そのため、 additionalView.m は UIViewController のインスタンスである必要があり、次のようにメイン ビューから作成できます。

-(IBAction)openView:(id)sender

 {

 AdditionalView *vc = [[AdditionalView alloc] initWithNibName:@"additionalView"];


 [self.view vc.view];

 }
于 2012-09-12T14:50:10.853 に答える
1

あなたの問題は、新しいView ControllerをViewController *vc = [[ViewController alloc] init];作成することです。これは新しいため、表示を管理しているビュー コントローラー階層に既に存在するものではありません。

メソッドは、既存のビュー コントローラーにアクセスする必要があります。それがどのように行われるかは、アプリの構造と、元のコントローラー オブジェクトへの参照を持つオブジェクトによって異なります。

于 2012-09-12T14:50:23.677 に答える
1

オプションがあります... まず、ビューだけが必要な場合は、ビュー コントローラー vc を作成する必要はありません。uiview を作成して追加します。オプション 1: 上記のようにアプリ VC に ref を渡します。次に: [appVC.view addsubview:additionalView]

これでメインに追加されます。

デリゲートとして参照できるビュー コントローラー マネージャー/参照をアプリ デリゲートで使用し、ビューを現在表示中のビューに追加します。

お役に立てれば

于 2012-09-14T04:44:27.970 に答える