5
私は、TableViewControllerで1つのコンテナビューを持つ単純なViewControllerを持っています。 ViewControllerで私は外部APIからデータを読み込み、そのデータの一部をコンテナ内のTableViewControllerに渡す必要があります。コンテナビューコントローラへのアクセス
どうすればいいですか? ありがとうございました!
私は、TableViewControllerで1つのコンテナビューを持つ単純なViewControllerを持っています。 ViewControllerで私は外部APIからデータを読み込み、そのデータの一部をコンテナ内のTableViewControllerに渡す必要があります。コンテナビューコントローラへのアクセス
どうすればいいですか? ありがとうございました!
コンテナビューに含まれるコントローラには、親コントローラの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()
}
}
は地獄は何をすべきかRD、1よりも多くがありますか?あなたはどのように知っていますか?何か案は?? – Fattie
@JoeBlow、戻ってきたコントローラのクラスをチェックして、どれがどれであるかを判断できます。また、私が答えて言ったように、コントローラをprepareForSegueに割り当てることもできます(組み込みコントローラはsegue.destinationViewControllerになります)。このメソッドは組み込みコントローラのために呼び出されるので、実装することができ、どのコントローラがどれであるかを知るためにsegueの識別子をチェックします。それはおそらくあなたが複数の子供を持っている場合、特にそれを行うためのより良い方法です。 – rdelmar
私はそれをテストし、それは完全に動作します。ブリリアント。驚くべきことはもっと一般的に知られていません。 – Fattie