所以我有一个FirstViewController,它是一个UITableViewController,以及delegate和dataSource。它有桌子视图。
我有另一个类,FeedParser,它解析数据 - 但在完成解析之后,我需要它去刷新UITableView,否则它不会显示任何内容。
这可能是一个愚蠢的问题,请原谅我,但我该如何从FeedParser调用FirstViewController的tableView.reloadData?
是否有返回该视图的方法?
谢谢!
答案 0 :(得分:17)
注册视图控制器以接收数据已更改的通知,并在收到数据时刷新表。然后让解析器将其发送出去。
注册很容易:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(yourRefreshMethodHere:)
name:@"YourNotificationName"
object:nil];
您的刷新方法需要设置为接收这些通知,具体如下:
- (void)reloadTable:(NSNotification *)notif {
[self.yourTableName reloadData];
}
在ViewDidUnload中停止观察非常重要:
[[NSNotificationCenter defaultCenter] removeObserver:self];
然后在解析器中,您只需在完成后添加它:
[[NSNotificationCenter defaultCenter] postNotificationName:@"YourNotificationName"
object:nil];
视图控制器(以及使用该名称观察通知的其他任何人)将获取消息并执行其任务。
答案 1 :(得分:3)
简单方法,
在appDelegate中为FirstViewController
创建一个对象,分配属性并合成它。
在FirstViewController的ViewDidLoad
中,
firstViewControllerObj = self;
在feedParser.m
中,解析完成后的代码如下,
[appDelegate.firstViewControllerObj.tabelView reloadData];
答案 2 :(得分:1)
只需在您的应用委托上存储对FirstViewController的引用,然后调用[appDelegate.firstViewController.tableView reloadData]
。