reloadData в MasterView из DetailView - PullRequest
0 голосов
/ 25 июня 2011

Я столкнулся с проблемой, похожей на эту, ранее на iPhone, но, похоже, это же решение не относится к среде iPad.Моя цель состоит в том, чтобы вызвать мой метод forceReload, определенный в моем RootViewController, который перезагрузит данные countdown_table в RootView из DetailView, как только модал будет отклонен.forceReload отлично работает при вызове напрямую из RootViewController, но я не могу указать, чтобы указать на RootViewController из DetailView.

Я пытался использовать

RootViewController *root_view = [self.splitViewController.viewControllers objectAtIndex:0];
[root_view forceReload];
[root_view.countdown_table reloadData];

Ноэто указывает только на контроллер навигации, а не на контроллер просмотра внутри него.Даже когда модал отклонен, RootViewController viewWillAppear не запускается.

Как я могу указать на этот файл?Спасибо!

1 Ответ

7 голосов
/ 26 июня 2011

Попробуйте использовать уведомления, т. Е. Зарегистрируйте RootViewController в качестве наблюдателя для уведомлений, которые может отправлять ваш DetailView или любое представление.

в viewDidLoad RootViewController:

[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(forceReload) 
                                             name:@"reloadRequest" 
                                           object:nil];

viewDidUnload или в dealloc:

[[NSNotificationCenter defaultCenter] removeObserver:self];

И в вашем DetailViewController или в вашем модальном представлении (вы не сказали, что они одинаковые), установите это право перед тем, как закрыть представление или точно, когда вам нужен RootViewController для вызова forceReload:

NSNotification *notif = [NSNotification notificationWithName:@"reloadRequest" object:self];
[[NSNotificationCenter defaultCenter] postNotification:notif];
...