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

发布于 2025-01-03 12:15:39 字数 753 浏览 0 评论 0原文

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

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

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

我试图让它工作如下:

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

我的直觉告诉我必须使用 Cocoa 绑定来做到这一点。 我在 Stackoverflow 和 google 上搜索过,但我就是无法让它工作。如果所有内容都在一个 nib 文件中,那么很容易完成。实现这一目标的最佳/最常用方法是什么?

提前致谢!

I'm building a Core Data document based application. In the app there's a main view (NSTableView) and an inspector view. Both views are separate nib files. The content of the inspector view should depend on the selected row in the main view. I have three controller files:

  • DocumentWindowController (master controller)
  • ItemsViewController (main view)
  • SchedulesViewController (part of the inspector)

Every controller owns a nib file. How is it possible to change the content of the inspector when the user selects another row in the main view's table?

I tried to make it work as follows:

  • Every controller has it's own NSArrayController, which is set up in the DocumentWindowController. The DocumentWindowController gets its managedObjectContext from [[self document] managedObjectContext]
  • When a user clicks a row in the ItemsViewController's tableView, an NSNotification is posted, with [NSTableView selectedRow] as a parameter. Then a fetch request is being made.

My intuition says I have to do this with Cocoa bindings.
I searched on Stackoverflow and google but I just can't make it work. If everything is in one nib file is very easy to accomplish. What is the best/most used way to achieve this?

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风吹雨成花 2025-01-10 12:15:39

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

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

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

@interface InspectorViewController : UIViewController{
    @public
    id<InspectorDataSource> dataSource;
}
@property (nonatomic, assign) id<InspectorDataSource> dataSource;

You could follow the same paradigm as the table view and create a data source for your inspector view.

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

Your inspector view controller would then have the data source as a property.

@interface InspectorViewController : UIViewController{
    @public
    id<InspectorDataSource> dataSource;
}
@property (nonatomic, assign) id<InspectorDataSource> dataSource;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文