UITableViewController 没有可见接口声明选择器 ReloadData

No visible interface for UITableViewController declares the selector ReloadData

我有一个 UITableViewController 作为我在应用程序中的主要 ViewController。我的目标是覆盖 reloadData 方法。

tableview 的 delegate 和 datasource 都自动设置在 Storyboard 中:

但是,当我在覆盖中调用 class 的 super 方法时,我得到了这个问题标题中看到的错误。

我的代码非常非常简单:

- (void)reloadData {
    [super reloadData];
}

此外,当我在我的应用程序的其他部分没有覆盖的情况下调用 reloadData 时,它似乎不会触发 cellForRowAtIndexPath:

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
    if ([elementName isEqualToString:@"theThingImLookingFor"]) {
        [self.tableView reloadData]; //no error thrown, but no tableReloading either
    }
}

我如何让它工作?我觉得我在这里遗漏了一些明显的东西......

UITableViewController 没有定义 reloadData 方法。这是一个 UITableView 方法。如果你已经定义了一个,除非你自己调用它,否则它不会被调用。我建议在您的 reloadData 方法上放置一个断点并查看它被调用的位置。

如果您自己调用 reloadData 方法,它不会执行任何操作。您需要调用 tableView 的 reloadData 方法。

您当然可以在 UITableViewController 中实现一个 reloadData 方法,该方法又会调用 table 视图的 reloadData 方法:

- (void)reloadData {
    [tableView reloadData];
}