UITableView调用错误的DataSource

时间:2013-07-09 08:25:12

标签: ios objective-c uitableview

我创建了一个 Master-Detail-Application ,它使用一个DetailViewController和多个TableViewDataSources。每次用户触摸某个项目时,我都会检查项目类并为其选择正确的TableSource。 就像这样:

if ([_detailItem isKindOfClass: [cAdress class]]) {
    self.dataSource = [[AddressDetailTableSource alloc] init];
    ((AddressDetailTableSource *) dataSource).current = _detailItem;
} else if ([_detailItem isKindOfClass: [cActivities class]]) {
    self.dataSource = [[ActivityDetailTableSource alloc] init];
    ((ActivityDetailTableSource *) dataSource).current = _detailItem;
}...

有时我会详细介绍详细信息并将新DetailView推到当前DetailView之上。我通过一些不同的观点做了很多。选择MasterView中的项目会导致应用程序返回到第一个DetailView(popToRootViewController)。 我现在特别对一个视图有问题。当此视图位于顶部并且我在MasterView中选择一个项目时,我的应用程序崩溃了。我发现NSZombies,它仍然试图使用错误的DataSource构建表。或者至少它试图在错误的DataSource上调用“titleForHeaderInSection”。错误消息是:

[ItemDetailTableSource tableView:titleForHeaderInSection:]:message sent to deallocated instance... 

错误只发生在这个特定的TableSource上,我也同样对待它。

任何人都可以帮助我摆脱这个问题吗?

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我认为您的应用程序正在尝试使用已释放的实例访问数据源,您最好为每个tableView创建单独的类,它将简化您的工作,总是尝试对类进行模块化,而不是尝试将所有内容放在一个类中。

相关问题