0

メイン ビューとフリップサイド ビューで Xcode のユーティリティ アプリケーション テンプレートを使用しています。メイン ビューには、L0 というプロパティ ラベルがあります。フリップサイド ビューでそのラベルをコピーしようとしています。裏返しに、私は宣言しました

@property (weak, nonatomic) IBOutlet UILabel *label;

.m ファイルに合成されます

@synthesize label = _label;

私のprepareForFegueメソッドは次のとおりです。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if ([[segue identifier] isEqualToString:@"showAlternate"]) {

     FlipsideViewController *fsv = (FlipsideViewController *)[segue destinationViewController];
     fsv.label = self.L0;
     fsv.delegate = self; 
}}

ただし、flipsideview のラベルのテキストは変更されませんが、prepareForSegue で NSLog fsv.label.text を実行すると、L0.text の値に適切に設定されていることがわかります。

私が間違っていることについて何か考えはありますか?

4

1 に答える 1

4

prepareForSegue の時点で、目的のビュー コントローラーは作成されていますが、ビューは読み込まれていません。したがって、ラベルに割り当てたものは、ビューロードされるときに上書きされます。これは、何かを行う前に label プロパティをログに記録することで確認できます。これは nil になります。

目的の VC には代わりに文字列プロパティが必要です。これは、目的のテキストで prepareForSegue に設定します。次に、viewWillAppear のこの文字列プロパティからラベルのテキストを設定します。

于 2012-04-29T06:50:39.560 に答える