ビューコントローラーをセグエで移行しているとしましょう。View Controller 1にtextFieldがあり、2番目のView Controllerにラベルがあります。2番目のView Controllerにセグエするときは、次のコードでラベルを簡単に設定できます:
ビューコントローラー #2
-(void) viewWillAppear: (BOOL) animated
{
self.labelVC2.text = ((VC1 *)self.presentingViewController).textFieldVC1.text;
}
これは完全に理にかなっています。この場合、presentingViewController プロパティが使用されています。presentedViewControllerプロパティがいつ使用されるかを把握しようとしている間、次のようにprepareForSegueメソッドの最初のView Controllerから使用されるのは論理的だと思われます。
ビューコントローラー #1
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([[segue identifier] isEqualToString:@"SegueToNextVC"])
{
((VC2 *)self.presentedViewController).labelVC2.text = self.textFieldVC1.text;
}
}
ただし、これは機能していないようで、セグエが発生する直前に prepareForSegue で 2 番目のビュー コントローラーの新しいインスタンスが呼び出され、設定したばかりのプロパティが失われるためだと思います。私がこれで正しければ、presentedViewControllerプロパティを使用するのに適切な時期はいつですか? クラスに直接アクセスできるため、2番目のView Controllerでこのプロパティを使用しないことは明らかです。