从另一个类重新加载iPhone上的TableView

时间:2010-11-30 05:51:24

标签: iphone objective-c uitableview

所以我有一个FirstViewController,它是一个UITableViewController,以及delegate和dataSource。它有桌子视图。

我有另一个类,FeedParser,它解析数据 - 但在完成解析之后,我需要它去刷新UITableView,否则它不会显示任何内容。

这可能是一个愚蠢的问题,请原谅我,但我该如何从FeedParser调用FirstViewController的tableView.reloadData?

是否有返回该视图的方法?

谢谢!

3 个答案:

答案 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]