2013-03-29 15 views
5

私は、TableViewControllerで1つのコンテナビューを持つ単純なViewControllerを持っています。 ViewControllerで私は外部APIからデータを読み込み、そのデータの一部をコンテナ内のTableViewControllerに渡す必要があります。コンテナビューコントローラへのアクセス

どうすればいいですか? ありがとうございました!

答えて

13

コンテナビューに含まれるコントローラには、親コントローラのself.childViewControllerによってアクセスできます。 1つしかなければ、self.childViewController [0]になります。


注:以下のコメントで説明したRDの優れた技術に関する。ここでは典型的な例があり、テストされ、働いています。これは単にシーン全体のVCに入ります。テキスト識別子を設定するには、セグ自体(接続矢印の中央にある小さな記号)をクリックするだけです。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
    { 
    if ([segue.identifier isEqualToString:@"containerLogin"]) 
     self.vcLogin = (LoginVC *)segue.destinationViewController; 

    if ([segue.identifier isEqualToString:@"containerStartNew"]) 
     self.vcStartNew = (StartNewVC *)segue.destinationViewController; 

    } 

はここスウィフトでそれを行うには、単に方法は次のとおりです。(あなたはunwrappersと注意する必要があります)

override func prepareForSegue(segue:(UIStoryboardSegue!), sender:AnyObject!) 
    { 
    if (segue.identifier == "feedContainer") 
     { 
     feed = segue!.destinationViewController as! Feed 
     feed.someFunction() 
     } 
    } 
+0

は地獄は何をすべきかRD、1よりも多くがありますか?あなたはどのように知っていますか?何か案は?? – Fattie

+2

@JoeBlow、戻ってきたコントローラのクラスをチェックして、どれがどれであるかを判断できます。また、私が答えて言ったように、コントローラをprepareForSegueに割り当てることもできます(組み込みコントローラはsegue.destinationViewControllerになります)。このメソッドは組み込みコントローラのために呼び出されるので、実装することができ、どのコントローラがどれであるかを知るためにsegueの識別子をチェックします。それはおそらくあなたが複数の子供を持っている場合、特にそれを行うためのより良い方法です。 – rdelmar

+0

私はそれをテストし、それは完全に動作します。ブリリアント。驚くべきことはもっと一般的に知られていません。 – Fattie

関連する問題