【问题标题】:Reloading TableView on iPhone from another class从另一个类重新加载 iPhone 上的 TableView
【发布时间】:2010-11-30 05:51:23
【问题描述】:

所以我有一个FirstViewController,它是一个UITableViewController,还有delegate和dataSource。它有表格视图。

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

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

有没有返回该视图的方法?

谢谢!

【问题讨论】:

  • feedparser 类是什么时候调用的?
  • feedParser 是单独的 viewController 吗?
  • FeedParser 类在加载应用程序时被实例化并从 AppDelegate 调用。
  • feedParser 本身并不是一个 viewController。
  • 解析后的数据存储在数组中还是什么?那是 tabelView 的数据源吗?

标签: iphone objective-c uitableview


【解决方案1】:

注册视图控制器以接收数据已更改的通知,并在收到通知时刷新表。然后让解析器将其发送出去。

注册很简单:

[[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];

视图控制器(以及使用该名称观察通知的任何其他人)将收到消息并执行其任务。

【讨论】:

  • 啊,我想到了某种通知方式——我试图通过应用程序委托来实现我自己的,但我不想经常检查一些东西。
  • 这很棒!谢谢! (而且我还不习惯整个输入是提交评论的事情;我打算把它放在一起)。非常感谢!如果可以的话,我会投票赞成,但我没有足够的代表:(
  • 哦,它还帮助我解决了我遇到的其他一些问题。非常感谢!
  • 太好了,很高兴它对你有用。通知也为我打开了大量的解决方案。 (虽然您不能投票,但您可以检查答案旁边的复选标记以表明它解决了您的问题 - 这也将帮助您的代表。)
  • 发现这个解决方案很好......代表凯文投票(他没有代表投票)
【解决方案2】:

简单的方法,

在 appDelegate 中为你的FirstViewController 创建一个对象,分配属性并合成它。

在FirstViewController的ViewDidLoad中,

firstViewControllerObj = self;

feedParser.m中,解析完成后的代码如下,

[appDelegate.firstViewControllerObj.tabelView reloadData];

【讨论】:

    【解决方案3】:

    只需在您的应用委托中存储对 FirstViewController 的引用,然后调用 [appDelegate.firstViewController.tableView reloadData]

    【讨论】:

    • 我对此很陌生,但我认为我做不到 - 我没有从应用程序委托加载 FirstViewController。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    相关资源
    最近更新 更多