MyViewController *myVC = (MyViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"MyViewController"];
[scrollView addSubview:myVC.view];
上記のコードは機能し、ストーリーボードにあるビューコントローラーをストーリーボードID「MyViewController」でロードし、サブビューとして表示します。
唯一のことは、たとえば、addSubviewを実行する前に、そのViewControllerにUILabelのテキストを設定したいということです。
このような:
MyViewController *myVC = (MyViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"MyViewController"];
myVC.aTextLabel.text = @"pippo";
[scrollView addSubview:myVC.view];
ただし、これは機能しません。UILabelは空です。-addSubviewを実行するまで、ビューで何もできません。このような:
MyViewController *myVC = (MyViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"MyViewController"];
[scrollView addSubview:myVC.view];
myVC.aTextLabel.text = @"pippo";
上記は機能しますが、きれいではありません。ビューが追加された後、ラベルのテキストが変更されます。
ストーリーボードなしでこれを行っていたとき、私はこれを行いました:
MyViewController *myVC = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
myVC.aTextLabel.text = @"pippo";
[scrollView addSubview:myVC.view];
これはうまくいくでしょう。
私が表示しているビューは、sequeを介して他のビューに接続されていません。その複数のインスタンスを、UIScrollViewに並べてロードしているので、最も簡単な方法が上記のようなものになることを期待していました。
では、プログラムでビューをインスタンス化し、そのビューのUILabelを更新してから、サブビューとして追加するにはどうすればよいですか?