reloadData in MasterView from DetailView

扶醉桌前 提交于 2019-12-12 09:29:12

问题


I ran into an issue similar to this earlier on the iPhone, but the same solution doesn't seem to apply to the iPad environment. My goal is to call my method forceReload, defined in my RootViewController, that will reload the countdown_table's data in the RootView from the DetailView once a modal is dismissed. forceReload works fine when called directly from the RootViewController, but I can't seem to point to point to the RootViewController from the DetailView.

I've tried using

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

But that only points to the Navigation Controller, not the View Controller inside of it. Even when the modal is dismissed, RootViewController's viewWillAppear does not fire.

How can I point to this file? Thanks!


回答1:


Try using notifications, i.e., register RootViewController as an observer for notifications that your DetailView or any view may send.

in RootViewController's viewDidLoad:

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

viewDidUnload or in dealloc:

[[NSNotificationCenter defaultCenter] removeObserver:self];

And in your DetailViewController or your modal view (you didn't say they're the same), put this right before you dismiss the view or exactly when you need RootViewController to call forceReload:

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


来源:https://stackoverflow.com/questions/6479780/reloaddata-in-masterview-from-detailview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!