2012-04-15 10 views
12

ビューにリンクされたUITableViewControllerにすべてのテーブルビューロジックをカプセル化しました。これはストーリーボードを使用して行われました。ストーリーボードを使用して別のコントローラ内のUITableViewControllerをサブビューする方法

Iは、別のビューコントローラ/ビュー内のこの論理ビューを埋め込むしたい

をI有し、以下の成分(下の種類のスクロール可能なテーブルと、ヘッダ情報等が挙げられる。): CustomViewControllerに連結されています(ストーリーボードからドラッグ)のUIViewのUITableViewにリンクされている CustomTableViewController(絵コンテからドラッグ)

基本的に私は、iOS用時計アプリに

    をストップウォッチのシナリオを模倣しようとしています
  • これに対する獣のアプローチは何ですか?
  • これはプログラムによってどのように行われますか?
  • これは何とかストーリーボード上で行うことができますか?

ご協力いただければ幸いです。ありがとう

+0

私はかなり理解していません...あなたは、サブビューとしてUIViewControllerを追加しますか? – CodaFi

+1

"獣の接近"、rawr! – pfrank

答えて

25

わかりました。この機能はiOS 5固有のものです。この方法はストーリーボードでも使用できます。

セットアップ:1つのビューコントローラビューとロジックを別のコントローラ内にホストすることを意図しています。

  1. ストーリーボードに子ビューコントローラーを参照する本来の方法はないので、ビューコントローラーに名前を付ける必要があります。これは、ストーリーボードのコントローラーの「Identifier」属性を記入することで行うことができます。注記:コントローラーには識別子であり、コントローラーのビューではないことを確認してください。

  2. 集約するコントローラをインスタンス化します。これはホスティングコントローラから行うことができます。

    UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"ControllerIdentifier"]; 
    
  3. 親コントローラ

    [self addChildViewController: controller]; 
    
  4. に子コントローラを追加し、子コントローラは、親のコントローラのビューに表示します。親ビューで子ビューを追加するプレースホルダービューを持っている場合は、これを行います。ここでは、親コントローラのstageというUIViewを追加します。

    [self clearStage]; 
    [self.stageView addSubview:controller.view]; 
    presentedController.view.frame = self.stageView.bounds; 
    

そして、それはそれです。ものすごく単純。私はそれを家庭用のタブコントロールでコントローラとビューを切り替えることに成功させました。サブコントローラは、ビューのライフサイクルでビューを公開します。したがって、この子ビューコントローラでは、viewDidLoadなどがすべて正常に動作します。

これが誰かを助けることを望みます。

関連する問題