2012-03-22 4 views
0

私はどのように私はそれがないことを確認することができ、イベントをキャッチされていない「addSubView」を使用して別のビューに埋め込まビューコントローラを持っていますか?は、私はこの問題を解決する方法を、didSelectRowAtIndexPath発生しませんか?

背景: 複数の開発者が共有するストーリーボードを分割するために、ビューをネストしようとしています。これを実現するために、私は、タブコントローラと4つのタブを含むmainStoryboardを作成しました。各タブにはUIView(別のストーリーボードに含まれる)をロードするサブビューが含まれています。これらのビューは、そのように追加されます。ロードされている

//Add sub view 
UIStoryboard *board = [UIStoryboard storyboardWithName:@"MessagesStory" bundle:nil]; 
UIViewController *boardController = [board instantiateInitialViewController]; 

[self.view addSubview:boardController.view]; 
boardController.view.frame = CGRectMake(0, 0, 320, 480); 

初期ビューコントローラはのUITableViewサブクラスで、全体の事は、テーブルをレンダリングするための素晴らしい作品、それが画面に内容だと私はテーブルと対話して選択することができますただし、ビューコントローラーのdidSelectRowAtIndexPathのイベントリスナーは起動できません。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@"Please kind sirs help a poor string appear in the console."); 

} 

私は私がメインビューイベントリスナーとしてそれ自身にサブビューをロードする場合ので、それがサブビューに関連している知っている:

は、私はそれが古き良きのNSLog()のおかげで発射いない知っています正常に機能します。これは予想以上の時間がかかっていると私はこれを実装し終えることができる前に、私は別のプロジェクトに引かれるよう

は、すべてのヘルプは高く評価されます。

+0

されていないことviewControllerの包含を実装する正しい方法 –

+0

ありがとう、あなたは正しい方向に私を指摘できますか? – wwwWRX

+0

時間がある場合は、[Apple Video from wwdc 2011](https://developer.apple.com/videos/wwdc/2011/)をご覧になることを強くお勧めします。 'Implementing UIViewController Containment'でビデオ/スライドを探してください。 –

答えて

1

私はそれを考え出しました。

それは驚くほど簡単だったが、私は答えを見つけるために読んでのかなりのビットを行う必要がありました。 「addSubView」のチュートリアルとサンプルでは、​​「addChildViewController」がわからない場合もあります。

とにかく、私はそれがこのシンプルだと信じて:

-(void)viewDidAppear:(BOOL)animated 
{ 
    if (firstLaunch) {  
      firstLaunch = NO; 

      //Find the view controller in the other storyboard 
      UIStoryboard *board = [UIStoryboard storyboardWithName:@"MessagesStory" bundle:nil]; 
      UIViewController *boardController = [board instantiateInitialViewController]; 

      //add it as a child view controller (THIS IS WHAT I WAS MISSING) 
      [self addChildViewController:boardController]; 

      //now it is okay to add the subview 
      [self.view addSubview:boardController.view]; 

      //trigger this method (also missing this but it will run without it, I assume is good practice) 
      [boardController didMoveToParentViewController:self]; 
    } 

    [super viewDidAppear:animated]; 
} 

私は情報を見つけるのは簡単だった 'addChildViewController' に知っていたしたら:

How does View Controller Containment work in iOS 5?

Is it wise to "nest" UIViewControllers inside other UIViewControllers like you would UIViews?

関連する問題