0

我正在构建一个基于核心数据文档的应用程序。在应用程序中有一个主视图(NSTableView)和一个检查器视图。两个视图都是单独的 nib 文件。检查器视图的内容应取决于主视图中的选定行。我有三个控制器文件:

  • DocumentWindowController(主控制器)
  • ItemsViewController(主视图)
  • SchedulesViewController(检查器的一部分)

每个控制器都拥有一个 nib 文件。当用户在主视图的表格中选择另一行时,如何更改检查器的内容?

我试图使其工作如下:

  • 每个控制器都有自己的 NSArrayController,它在 DocumentWindowController 中设置。DocumentWindowController 从 [[self document] managedObjectContext] 获取它的 managedObjectContext
  • 当用户单击 ItemsViewController 的 tableView 中的一行时,会发布一个 NSNotification,其中 [NSTableView selectedRow] 作为参数。然后正在发出获取请求。

我的直觉说我必须用 Cocoa 绑定来做到这一点。我在 Stackoverflow 和 google 上进行了搜索,但我无法让它工作。如果一切都在一个 nib 文件中,则很容易完成。实现这一目标的最佳/最常用方法是什么?

提前致谢!

4

1 回答 1

1

您可以遵循与表格视图相同的范例,并为您的检查器视图创建数据源。

@protocol InspectorDataSource <NSObject>
- (void) inspectorView:(InspectorView*)inspectorView managedObjectSelected:(NSManagedObject*)managedObject;
@end

然后,您的检查器视图控制器会将数据源作为属性。

@interface InspectorViewController : UIViewController{
    @public
    id<InspectorDataSource> dataSource;
}
@property (nonatomic, assign) id<InspectorDataSource> dataSource;
于 2012-02-07T16:50:16.170 回答