Core Data 文档基于多个 nib 基于选择

Posted

技术标签:

【中文标题】Core Data 文档基于多个 nib 基于选择【英文标题】:Core Data document based multiple nib based on selection 【发布时间】:2012-02-07 16:16:50 【问题描述】:

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

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

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

我试着让它工作如下:

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

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

提前致谢!

【问题讨论】:

【参考方案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;

【讨论】:

以上是关于Core Data 文档基于多个 nib 基于选择的主要内容,如果未能解决你的问题,请参考以下文章

单窗口、非基于文档的应用程序中的 Nib 文件(和代码)组织

如何基于 nib 文件创建 UINavigationItem.TitleView?

使用 Core Data 进行存储 - 在基于导航和基于窗口的应用程序中 - iPhone

在基于导航的应用程序中使用 Core Data 时,我如何(应该?)在 UITableViews 之间传递上下文?

.net core 基于Dapper 的分库分表开源框架(core-data)

如何根据来自多个 Core Data 属性的计算值进行排序