2011-09-29 10 views
6

segueオブジェクトを使用して宛先ビューコントローラのプロパティを変更する方法は、2つのView Controller間でSegueを実装する際にはどうなりますか?ドキュメントには、prepareForSegue:sender:メソッドの内部でこれを行うことができると書かれています。私はそれを試みたが成功しなかったiOS 5 segueの実装

答えて

13

Dunnoこれに答えがまだ必要ですが、それはそのような孤独な投稿でした、私は正しい場合、これはもはやNDAに該当しません。私が間違っている場合は、私の答えを忘却に近づけてください。ここで私たちは行きます。あなたが必要とするものを使う何かをやっただけです。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"relevantSegueIdentifier"]) 
    { 
     // [segue destinationViewController] is read-only, so in order to 
     // write to that view controller you'll have to locally instantiate 
     // it here: 
     ViewController *upcomingViewController = [segue destinationViewController]; 

     // You now have a solid reference to the upcoming/destination view 
     // controller. Example use: Allocate and initialize some property of 
     // the destination view controller before you reach it and inject a 
     // reference to the current view controller into the upcoming one: 
     upcomingViewController.someProperty = [[SomePropertyClass alloc] initWithString:@"Whatever!"]; 
     upcomingViewController.initialViewController = [segue sourceViewController]; 
     // Or, equivalent, but more straightforward: 
     //upcomingViewController.initialViewController = self; 
    } 
} 

これはsomePropertyとinitialViewControllerの両方が先ビュー・コントローラのアクセサを合成されることを前提としています。これは私のために動作するコードです。お役に立てれば!

+0

NDAの対象となりますが、3日間で公式リリースは10月14日にはありませんが、私はurの回答+1が好きです。 –

+0

あなたの言うことを試しましたが、私の 'destinationViewController'のプロパティは更新されません。何かアドバイス? – Francesco

+0

目的のビューコントローラの合成されたアクセサ(プライベートivarではない)を使用し、アプリケーションのセットアップ中にビューコントローラが既にインスタンス化されていることを確認します(実際のビューコントローラが配置されたストーリーボード、打ち上げ)。その場合は、うまくいくはずです。それはあなたの特定の目的地を知らないシステムのようなものかもしれません。コントローラクラスを表示します。私の例のViewControllerクラスは、UIViewControllerのサブクラスです。@implementationの前には、 '#import "ViewController.h"のようなことをします。これらのものの1つになりますか? – DarqueSandu

0

このトピックについてのビデオを作成しました。私はそれが助けて欲しい

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    UIViewController *upcomingViewController = [segue destinationViewController]; 
    upcomingViewController.view.tag = [[segue identifier] hash]; 
} 

そして、私が使用して先ビュー・コントローラ(viewDidAppearでのインスタンスのための使用)

if(self.view.tag == [@"MySeqgueIdentifier" hash]) 
{ 
    // Do something here... 
} 

にこれはクールです、以来:ソース・ビュー・コントローラがある中で、私が使用してどのようなhttp://full.sc/17yKkZF

0

プロパティなどを作成する必要はなく、すべてがインターフェイスビルダーから正しく機能します。