Как передать данные в дочерний контроллер представления перед вызовом viewDidLoad родительского контроллера?

Мне нужно отобразить данные пользователя в представлении контейнера, когда мое приложение запускается.

Я обычно читаю данные с Core Data в родительском контроллере представления viewDidLoad метод. И я попытался отправить данные на контроллер дочернего представления с prepareForSegue метод с помощью встроенного перехода. Но, как я выяснил, prepareForSegue называется до viewDidLoad метод. Это означает, prepareForSegue не имеет действительных данных для отправки дочернему контроллеру представления.

Что я могу с этим сделать?

2 ответа

Решение

Загрузите данные и найдите ваш дочерний контроллер в parrentController.childViewControllers и отправьте эти данные ему. Пример:

- (void)viewDidLoad {
    [super viewDidLoad];
    [self loadData];
    MyChildViewController childViewController = [self.childViewControllers firstObject];
    [childViewController setData:self.dataForChild];
    [childViewController updateInterface];
}

loadData, dataForChild, setData, updateInterface - ваши пользовательские методы / свойства.

Вы можете попытаться создать метод в своем классе (метод загружает дату из базы данных) и вызывает этот метод внутри метода prepareForSegue. пример:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
     (you method) 
     ....

}
Другие вопросы по тегам