2017-02-09 19 views
-1

У меня есть ParentViewController, в котором я использую вид на другой ChildViewController «сек этим кодом в ViewDidLoadданных не обновляется в ChildViewController, когда поп на ParentViewController

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    _childVC = [sb instantiateViewControllerWithIdentifier:@"ChildViewController"]; 

    [self addChildViewController:_childVC]; 
    [self.myView addSubview:_childVC.view]; 
    [_childVC didMoveToParentViewController:self]; 

Теперь есть Tableview в ChildVC, которые имеют данные dataArray, когда контроллер родительского представления вызывается в первый раз, он отлично работает и показывает правильные данные в self.myView, но когда я нажимаю на другой контроллер представления, который приводит к обновлению dataArray таблицыView контроллера дочернего представления. Теперь, когда я выхожу из родительского представления из этого другого VC, данные таблицы в self.myView не обновлялись.

Я попробовал это в ParentView

-(void)viewWillAppear:(BOOL)animated{ 

    [_childVC didMoveToParentViewController:self]; 
} 

И это в контроллере представления ребенка

-(void)viewWillAppear:(BOOL)animated{ 

    [self.tableView reloadData]; 
} 

И я не добавлять код в ChildVC, связанные с ParentVC. Не заботьтесь о том, почему и как данные обновляются, просто притворяйтесь, что он обновляется всякий раз, когда я нажимаю на другой контроллер представления из родительского контроллера.

+0

Вы не предоставили достаточную информацию. Вы говорите об обновляемых данных, но не говорите нам ничего об этих данных или о том, как они распределяются между контроллерами представлений. Также неясно, что вы подразумеваете под «... когда я выхожу на родительский взгляд из любого другого VC, данные в childView не обновляются». Что вы имеете в виду поп-альбом? Вы имеете в виду, если вы нажмете новый контроллер представлений поверх текущего контроллера представления, который содержит контроллер дочернего представления, а затем выпустите этот новый контроллер представления, чтобы повторно открыть родительский контроллер представления, код которого вы отправили? –

+0

Вам нужно представить четкую и полную картину проблемы, которую вы пытаетесь решить, или мы не сможем помочь. –

+0

Данные должны быть обновлены, так как данные DataArray в представлении таблицы контроллера детского просмотра обновляются, когда я нажимаю родительский контроллер представления на другой контроллер представления. И вы правы в отношении поп-версии к родительскому виду. Таким образом, проблема заключается в том, что «myView», у которого есть представление в представлении контроллера дочернего представления, не показывает обновленное представление таблицы. –

ответ

0

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

Вам понадобится создать механизм уведомления контроллера дочернего представления о том, что данные были изменены.

Вот несколько возможностей:

Вы можете создать менеджер уведомления уведомления, что вы вещать при изменении данных, и слушать это уведомление в контроллере представления ребенка.

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