0
 Parent 
    View Controller 
_________________ 
|     | 
|     | 
|     |  Navigation Cont. 
|_________________|  _________________ 
|     |  |     | 
|     |  |     | 
| Container View | --> |     | --> Child View Controllers 
|     |  |     | 
|_________________|  |_________________| 

Мое приложение имеет навигационную структуру, состоящую из контроллера родительского представления и контейнера, который содержит контроллер навигации (и контроллеры его дочернего представления). Проблемы состоят в том, что во время инициализации этих дочерних контроллеров View я хочу передать некоторые значения, предоставленные контроллером Parent View. К сожалению, метод prepareForSegue, используемый в родительском объекте, обнаруживает только сегмент контейнера, но его не вызывается, когда меняются контроллеры детского вида.Связь между контроллером навигации и видом контейнера

Как решить эту проблему? Я использую Swift, но я также понимаю Objective-C.

+0

Я бы использовал шаблон делегата. – dasdom

+0

До сих пор я пробовал делегировать, но я мог передавать только значения Container -> Parent, not Parent -> Container, как я пытаюсь сделать. – Rodrigo

ответ

0

Ну, на конец потребовалось время ... но я, наконец, получил его. Это просто: ребенок будет разговаривать с родителем над self.parentview.parentview. Несколько делегатов, и все сделано.

0

Вы можете использовать prepareforsegue как,

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
// Make sure your segue name in storyboard is the same as this line 
if ([[segue identifier] isEqualToString:@"YOUR_SEGUE_NAME_HERE"]) 
{ 
    // Get reference to the destination view controller 
    YourViewController *vc = [segue destinationViewController]; 

    // Pass any objects to the view controller here, like... 
    [vc setMyObjectHere:object]; 
} 
} 

вы можете сделать это из контейнера ViewController

NSArray *viewControllers = self.navigationController.viewControllers; 
UIViewController *rootViewController = (UIViewController *)[viewControllers objectAtIndex:viewControllers.count - 2]; //index of your root viewcontroller 

и относятся this link данных о пропусках в `containerview в VC»

+0

Спасибо, но я уже говорил, что prepareForSegue вызывается только один раз, когда контейнер загружен, проблема возникает, когда в контроллере навигации внутри контейнера есть какие-либо изменения, поскольку метод prepareforsegue в родительском устройстве не вызывается. – Rodrigo