Uitableview 如何在一个视图控制器中有两个tableview,其中一个tableview依赖于另一个

Uitableview 如何在一个视图控制器中有两个tableview,其中一个tableview依赖于另一个,uitableview,core-data,delegates,xcode6,Uitableview,Core Data,Delegates,Xcode6,我正在创建一个应用程序,它需要有两个与核心数据链接的TableView。第一个表视图是父表视图,用户需要在第二个表视图填充相关数据之前选择它。我一直在看示例和解决方案,但我遇到了FetchRequest控制器的一个问题。它如何知道要查询哪个表 我看到了一个例子,但它并不完整。或者至少,它没有给出关于如何设置第二个tableview的委托和数据源的完整细节。好吧,委托是ViewController,但是数据源呢?它如何知道从哪些数据中提取数据 我希望你们能帮助解决这个难题,或者至少给我举个例子。我

我正在创建一个应用程序,它需要有两个与核心数据链接的TableView。第一个表视图是父表视图,用户需要在第二个表视图填充相关数据之前选择它。我一直在看示例和解决方案,但我遇到了FetchRequest控制器的一个问题。它如何知道要查询哪个表

我看到了一个例子,但它并不完整。或者至少,它没有给出关于如何设置第二个tableview的委托和数据源的完整细节。好吧,委托是ViewController,但是数据源呢?它如何知道从哪些数据中提取数据

我希望你们能帮助解决这个难题,或者至少给我举个例子。

我会使用UIViewController而不是UITableViewController。在代码或情节提要中添加两个UITableView,并为它们创建两个属性——比如parentTableView和childTableView。使视图控制器同时成为两个表视图的委托和数据源。实现相关方法时,首先检查方法调用中传递的tableView参数,并提供相关数据:

if (tableView == self.parentTableView) {
    // provide data relevant to the parent...

} else { // provide data relevant to the child...

}
要为表提供数据,可以为父级使用一个获取的结果控制器,然后使用父子关系派生子表视图的数据,例如,对于子级的numberOfRowsInSection,可以使用[self.selectedParent.children count]等。这将很好地工作,但您失去了为子对象使用“获取结果”控制器的好处:自动表节,以及插入/更新/删除新子对象时的自动更新

如果愿意,可以使用两个单独的获取结果控制器—一个用于父对象,另一个用于子对象。为每个属性创建一个属性,比如parentFRC和childFRC,然后使用相关的属性在tableView委托方法中提供数据,如上所述。对于childFRC,您应该设置一个谓词,该谓词将获取的子对象限制为其父对象是parentTableView中选定父对象的对象。当所选父项发生更改时,您需要重新设置childFRC的获取


如果使用NSFetchedResultController委托方法跟踪数据更改,则应再次将视图控制器设置为两个FRC的委托,并在相关方法的实现中,检查在方法调用中传递的fetchedResultController参数,以确定已更改的对象是父对象还是子对象,并更新相应的表。

您已经为我的困境提供了一些线索!我会尽快这样做: