1

私のアプリには、このプロパティがあります(およびその@synthesize.m)

@property (nonatomic, strong) IBOutlet UILabel *titleHeader;

secondViewController

問題は、iOS 7if from firstViewControllerI do:

[secondViewController.titleHeader setText:@"title"];

それは機能しませんiOS 6

なぜ?

編集

私がやる:

SecondViewController *secondViewController = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil code:[object code]];
        [self.navigationController pushViewController:secondViewController animated:YES];
        [secondViewController.titleHeader setText:[object name]];
        [secondViewController.headerView setBackgroundColor:colorHeaderGallery];
4

1 に答える 1

3

のビューは、secondViewController設定時にまだロードされていません。secondViewController.titleHeaderこれは、View Controller をナビゲーション スタックにプッシュした後に の値を照会することで確認できます。

修正として、プロパティを宣言できますsecondViewController

@property (nonatomic, strong) NSString *titleHeaderText;

次に、代わりにそのプロパティを設定しsecondViewController.titleHeader setText
ます

secondViewController.titleHeaderText = [object name];

その後、secondViewControllerviewDidLoadメソッドで、ラベルのテキストを設定できます。

[self.titleHeader setText:self.titleHeaderText ];

編集:
の動作はpushViewControlleriOS 7 で変更されたようです。問題を再現してみました。

上記の変更を望まない場合の回避策は、 のビューにアクセスして、secondViewControllerを呼び出す前にそのビューが読み込まれるようにすることですlabel setText
例えば

SecondViewController *secondViewController = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil code:[object code]];
[self.navigationController pushViewController:secondViewController animated:YES];
[secondViewController view];
[secondViewController.titleHeader setText:[object name]];
[secondViewController.headerView setBackgroundColor:colorHeaderGallery];
于 2013-10-01T09:22:51.213 に答える