親View ControllerのchildViewControler
変数は、セグエによって作成された子View Controllerクラスのインスタンスを指す必要があります。何も割り当てない場合、それは であり、それへのnil
メッセージは何もしません。
投稿したコードからは、それがプロパティ、インスタンス変数、ローカル変数のいずれであるかは不明です。インスタンス変数を使用してそれを行う方法は次のとおりです。
@implementation ParentViewController
{
ChildViewController *childViewController;
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// if you have multiple segues, check segue.identifier
// so you only do this for the correct segue
childViewController = segue.destinationViewController;
}
- (void)buttonPressed
{
childViewController.textViewName.text=@"something";
}
@end
キービットが入っています。セグエによって作成されたView Controllerを変数が指してprepareForSegue:sender:
いることを確認する必要があります。childViewController
また、ストーリーボード前の古いコードがまだ残っているために問題が発生する可能性もありますalloc
。これは、子ビュー コントローラーを変数init
に入れます。childViewController
その場合、そのビュー コントローラー クラスの 2 つのインスタンスが存在します。1 つはセグエによって作成されたもので、もう 1 つは作成したものです。セグエによって作成されたものだけが UI にフックされるため、他のものに加えた変更は表示されません。この問題は、子ビュー コントローラーを作成して表示するコードを削除することで解決できます。ストーリーボードがすべてを処理prepareForSegue:sender:
し、子ビュー コントローラーへの参照を取得するために必要な唯一の場所になります。