2012-01-27 7 views
0

私は次のように私はIBActionを持ってPickDateControllerにそう DetailViewControllerにPickDateControllerからNSDateを渡したい:私のようなダミーのためにストーリーボードを使用してNSDateを正しく渡すにはどうすればよいですか?

-(IBAction)doneDate:(id)sender{ 

NSLog(@"Date Here DPC = %@", [datePicker.date description]); //This shows fine 
dateLabel.text = [datePicker.date description]; //This also shows. 

DetailViewController *controller = [[[DetailViewController alloc] init] autorelease]; 

NSDate *dateSel = datePicker.date; 
[controller setDateSelected:dateSel]; //This DOES NOT go to DetailViewController 
controller.dateSelected = dateSel; //This doesn't work either 

[self.navigationController popViewControllerAnimated:YES]; 

} 

を私が行方不明です何? DetailViewControllerに - (void)setDateSelected {}を書き込む必要がありますか?それとも問題ではないですか?

+1

'ストーリーボードのDetailViewController'の一部ですか?間のいずれかのseguesがありますこれらのコントローラは? 'alloc/init'を使用すると、ストーリーボードによってインスタンス化されたコントローラを手に入れることはできません。それらの間にセグがある場合、新しいコントローラを作成するのではなく、ビューコントローラに' prepareForSegue' 。 –

+0

はい両方のコントローラはストーリーボードの一部ですDetailViewControllerからPickDateControllerまでのセグがありますので、私はpickViewControllerを "消す"ことができますが、変数はDetailViewControllerに渡されません。日付を選択した後、DetailViewControllerに戻る別のセグを作成する必要がありますか? – Farini

+1

いいえ、あなたの 'PickDateController'に' PickDateControllerDelegate'と 'delegate'プロパティの並べ替えを作成する必要があります。 'DetailViewController'の' prepareForSegue'メソッドで、 'DetailViewController'を呼び出すためにデリゲートを設定することができます。 'PickDateController'の中から' self.delegate'を介してアクセスできます。良い例についてはhttp://www.raywenderlich.com/5191/beginning-storyboards-in-ios-5-part-2をご覧ください。基本的にルールは次のとおりです:セグは "in"になるだけで、 "back"にはなりません。 –

答えて

1

コントローラとの間の既存のseguesがあることを考えるとDetailViewControllerやっPickDateControllerにセグエ:

あなたがalloc/initを使用している場合、あなたは文句を言わないストーリーボードでインスタンス化コントローラを取得します。それらの間にセグがある場合は、新しいコントローラを作成する必要はなく、バック・コントローラーにprepareForSegueを実装して、「バック・チャネル」を作成します(情報を戻すには、新しいセグエ・バックを作成できませんのみ)決して「戻る」、「中」に行く: あなたがPickDateControllerDelegateの並べ替えや、あなたのPickDateControllerのデリゲートプロパティを作成する必要があります。次に、あなたがあなたのDetailViewControllerprepareForSegue方法で、DetailViewControllerを呼び出すにdelegateを設定することができ

これでPickDateControllerの中からself.delegate経由でアクセスすることができ、ナビゲーションスタックから解除/ポップされる前にすべての情報が返されます。delegateは、コールコントロールに通知することもできますそれはそれ自体を却下するのではなくPickDateControllerを却下するかもしれないということです。

Beginning Storyboards, part 2は、あなたがまだARCを使用していない場合は、weakstrongためassignretainプロパティを使用することができます(これを行うには良いの参照です。

関連する問題