Как передать ссылку на объект в модально представленный контроллер представления, который содержится внутри контроллера навигации?

У меня проблема с передачей ссылки на мой объект данных. Контроллер представления представления имеет ссылку на объект данных. Модальный контроллер вида подключен к контроллеру навигации и является его корневым контроллером вида. Вот как я это делаю:

Представляя ВК:

- (IBAction)changeCustomerButtonPress:(UIButton *)sender {    
    UINavigationController *customersNC = [self.storyboard instantiateViewControllerWithIdentifier:@"customersNC"];
    SCCustomersVC *customersVC = (SCCustomersVC *)[self.storyboard instantiateViewControllerWithIdentifier:@"customersVC"];
    customersVC.dataObject = self.splitVC.dataObject;

    //at this point, customersVC.dataObject exists

    [self presentViewController:customersNC animated:YES completion:nil];
}

Когда появляется модальный VC, self.dataObject равен nil.

- (void)viewWillAppear:(BOOL)animated
{       
    //self.dataObject is nil here.
}

Как правильно это сделать?

1 ответ

Решение

Есть ли у вас навигационный контроллер в ИБ-контроллере? Если не так. Но предполагая, что он у вас есть, вам не следует создавать экземпляр SCCustomersVC, потому что навигационный контроллер сделает это при его создании. Чтобы передать данные, просто получите ссылку на этот контроллер с помощью topViewController:

SCCustomersVC *customersVC = (SCCustomersVC *)[customerNC topViewController];
    customersVC.dataObject = self.splitVC.dataObject;