IOS: установить свойство в iOS7
В моем приложении у меня есть это свойство (и его @synthesize
в.м)
@property (nonatomic, strong) IBOutlet UILabel *titleHeader;
в secondViewController
,
Проблема в том, что в iOS 7
если из firstViewController
Я делаю:
[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];
1 ответ
Мнения secondViewController
еще не были загружены, когда вы их установили. Вы можете проверить это, запросив значение secondViewController.titleHeader
после перемещения контроллера вида в стек навигации.
Как исправить, вы можете объявить свойство в secondViewController
@property (nonatomic, strong) NSString *titleHeaderText;
затем установите это свойство вместо secondViewController.titleHeader setText
например
secondViewController.titleHeaderText = [object name];
После этого в вашем secondViewController
"s viewDidLoad
Метод, вы можете установить текст вашей метки.
[self.titleHeader setText:self.titleHeaderText ];
РЕДАКТИРОВАТЬ:
Поведение pushViewController
похоже, изменилось в iOS 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];