0

UIViewController クラスをサブビューとして既存のクラスに追加したいので、次のコードを使用しました。

myEventsView = [[EventNameViewController alloc]initWithNibName:@"EventNameViewController" bundle:nil];
[myEventsView.view setFrame:CGRectMake(0, 39, 320, 400)];
[self.view addSubview:myEventsView.view];

正常に追加されましたが、ボタン アクションに問題があり、他のビュー コントローラーに移動する必要があるアクションが機能していません。これらのアクション メソッドが呼び出されますが、アクションが実行されない、理由が得られない、上記のガイドを参照してください。

前もって感謝します。

4

3 に答える 3

2

試す

myEventsView = [[EventNameViewController alloc]initWithNibName:@"EventNameViewController" bundle:nil];
[myEventsView.view setFrame:CGRectMake(0, 39, 320, 400)];
[myEventsView willMoveToParentViewController:self];
[self.view addSubview:myEventsView.view];
[self addChildViewController:myEventsView];
[myEventsView didMoveToParentViewController:self];
于 2013-05-02T08:25:18.457 に答える
0

ドキュメントから:

作成した各カスタム ビュー コントローラー オブジェクトは、単一のビュー階層内のすべてのビューを管理します。

あなたがやろうとしているのは、あるビューコントローラーのビューを別のビューコントローラーのビューのサブビューとして追加することです。したがって、2 つのビュー階層が混在しています。すでに経験したように、それはあなたに問題を引き起こします。Carbon Emitter のAbusing UIViewCtrollersの記事をご覧ください。完全な説明と代替案が記載されています。

アップデート

上記の正解で示唆されているように、ある UIViewController を別のコンテナーとして機能させる方法が存在します。コンテナー ビュー コントローラーの実装( UIViewControllerクラス リファレンス) から:

カスタム UIViewController サブクラスは、コンテナー ビュー コントローラーとしても機能します。コンテナー ビュー コントローラーは、所有する他のビュー コントローラー (子ビュー コントローラーとも呼ばれる) のコンテンツの表示を管理します。子のビューはそのまま表示することも、コンテナ ビュー コントローラーが所有するビューと組み合わせて表示することもできます。

ただし、これは iOS >= 5 の機能であるため、iOS バージョン < 5 を実行しているアプリケーションについては、私の答えは正しいままです。

于 2013-05-02T08:07:11.570 に答える