1

iPad用のiOSシングルビューアプリケーションがあり、ストーリーボードを使用しています。

  • xcode(vc1)によって作成されたデフォルトのviewcontrollerがあります。そのビューにボタンを配置します。

  • 次に、新しいView Controller(screen2VC)をストーリーボードにドラッグします。

  • また、新しいView Controllerサブクラス(vc2SubClass)を作成します

  • アイデンティティインスペクターを介してscreen2VCをこのサブクラスに関連付けます。

  • screen2VCのビューでは、ラベルがあります。ラベルを制御してvc2SubClassにドラッグし、アウトレットを作成します。

  • vc1のボタンとvc2のボタンの間にセグエを作成します。

  • PerformSegueオーバーライドでは、次のコードがあります。

if ([segue.identifier isEqualToString:@"segue1"])
{
    screen2VC* vc = [segue destinationViewController];
    vc.label1.text = @"screen 2";
}

コードを実行してボタンを押すと、セグエは機能し、2つのビュー間を正常に遷移しますが、screen2VCのラベルが「screen2」に設定されることはありません。テストとして、label1.text = @"screen 2";コードをvc2SubClassに配置しましたが、違いはありませんでした。前者が後者をサブクラス化し、ラベルがUILabelアウトレットを指している場合でも、screen2VCとvc2SubClassの間にまだ関連付けがないようです。

何か案は?

4

1 に答える 1

1

vc1を使用している場合performSegue:、vc2のビュー階層はまだ設定されていません。これを行う通常の方法は、vc2に、の間に文字列が一時的に与えられるプロパティを持つことperformSegue:です。このプロパティは、vc2のラベルを更新するために使用されviewWillAppear:ます。

「テストとして、'label1.text = @ "screen 2";'コードをvc2SubClassに配置しましたが、違いはありません」と言うと、そこで何が起こっているのかわかりません。そのコードはどのメソッドに入れられましたか?)

于 2012-10-21T17:26:23.307 に答える