如何在Master和Detail部分中使用具有TableViewControllers的SplitView

时间:2013-02-08 08:21:48

标签: core-data uitableview uisplitviewcontroller one-to-many

我正在尝试使用SplitView来显示有关员工的信息。主要部分中有一个部门列表。单击部门时,需要在详细信息中显示在所选部门工作的雇主列表。 我正在使用CoreData和两个实体:"部门"和"员工"与“多对多”关系相关联。 我该怎么办?

由于

1 个答案:

答案 0 :(得分:0)

这是一个简化的概述,因为您提出了一个非常广泛的问题。

  1. 创建一个UITableViewController子类作为您的主视图。它应该具有类型NSManagedObjectContext的属性,它应该处理获取和显示部门。 (您可以在loadView中抓取它们,也可以使用NSFetchedResultsController ...)

  2. 创建另一个UITableViewController子类作为您的详细信息视图。为其提供类型为NSManagedObjectContext的属性,以及类型为Department的属性。使其显示该部门的员工。只要department属性发生变化,您就会重新加载数据。

  3. 向主视图控制器添加属性,以引用详细视图控制器(因此类型为EmployeeViewController的属性,或者您调用的任何属性)。然后在主视图控制器的tableView:didSelectRowAtIndexPath:中,设置self.employeeViewController.department = <selected department>

  4. 创建拆分视图控制器。如果这是应用程序的顶级视图,您将需要在应用程序委托中创建它,否则在视图控制器中将其创建到堆栈中。这是如何做到的(伪代码):

    • 创建新的详细信息视图控制器
    • 设置其managedObjectContext属性
    • 创建新的主视图控制器
    • 设置其managedObjectContext属性
    • 将主视图控制器的employeeViewController属性设置为详细视图控制器
    • 创建新的拆分视图控制器
    • 将拆分视图控制器的viewControllers属性设置为包含主视图控制器和详细视图控制器的数组
    • 以某种方式在屏幕上获取拆分视图控制器,方法是将其推送到导航堆栈或将其设置为applicationDidFinishLaunching:中的根视图控制器。