基于核心数据文档的多个笔尖基于选择

时间:2012-02-07 16:16:50

标签: objective-c cocoa core-data cocoa-bindings document-based

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

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

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

我试着按照以下方式工作:

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

我的直觉说我必须用Cocoa绑定做到这一点。 我在Stackoverflow和谷歌搜索但我无法使它工作。如果一切都在一个nib文件中很容易实现。实现这一目标的最佳/最常用的方法是什么?

提前致谢!

1 个答案:

答案 0 :(得分: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;