objective-c - Core Data 应用程序中的多个 View 和源列表

标签 objective-c cocoa core-data

我正在为本科研究项目开发我的第一个主要 Cocoa 应用程序。

该应用程序基于文档并使用核心数据。其中一个实体是一个抽象实体,Page。 Page 是多种类型页面的父级:即 PageWithHeaderAndFooter、PageWithTwoColumns、BasicPage 等。 Page 具有所有页面都具有的属性,例如标题和作者。常见的。每种特定类型的页面都有一定数量的布局 block (PageWithHeaderAndFooter 有 3 个:页眉、页脚、正文。BasicPage 有一个:正文等)此外,所有 Page 子类定义某些方法的特定于布局的实现。

另一个相关实体是Style,它定义Page的视觉外观。 (将 Page 视为 HTML,将 Style 视为 CSS。)

我希望我的应用程序有一个类似 iTunes/Mail 的源列表,其中包含各个部分。 (一个部分是页面,另一部分是样式。)我非常清楚如何执行分段源列表( this was a great help )。

但是,经过几个小时的敲头和毫无结果的谷歌搜索后,我无法弄清楚以下内容:

源列表中列出的页面和样式,当您选择其中之一时,该对象的所有相关字段都会显示在右侧(主要是 NSTextView、弹出菜单等)。

我将其布局并在 Interface Builder 中完成了所有绑定(bind)。

问题是,如果我的源列表包含不同类型的页面,我如何根据所选页面的类型在右侧显示不同的 View ?例如,如果选择了 BasicPage,我想要的就是您在上面看到的内容:一般页面内容和一个与 BasicPage 的一个字段 body 相对应的 NSTextView 。但是,如果我选择一个 PageWithHeaderAndFooter,我想显示一般页面内容以及三个 NSTextView(一个用于页眉、正文和页脚)。如果我选​​择了一个 Style,我想显示各种弹出菜单、颜色井等。

至少对于页面来说,我们只讨论一个或多个 NSTextView,每个 NSTextView 对应于相应实体的一个 String 属性。

你会怎么做?

感谢您的帮助!

最佳答案

我有一个项目列表,属于 3 种类型之一,但所有项目都非常相似。

我在推送之前将Entity设置到 View Controller 中,然后在推送者的viewDidLoad中检查我的entity类型通过指定要加载的不同 Nib 来以不同方式配置信息。

if([[entity entityType] isEqualToString:@"TypeA"]) {
    [[NSBundle mainBundle] loadNibNamed:@"TypeAView" owner:self options:nil];
} else if(...) { .....

这对我来说效果很好。

关于objective-c - Core Data 应用程序中的多个 View 和源列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1215986/

相关文章:

iphone - View Controller 之间的自定义转换?

ios - 一个项目中无法进行日志记录(NSLogs 不起作用)

ios - Swift-无法将核心数据转换为url参数

ios - 核心数据崩溃 - NSPersistentStoreCoordinator 没有持久存储(损坏的文件)

ios - iOS mask 图层和添加子图层之间的区别

ios - 阻止回调未从 IOS 中的单元测试程序调用

iphone - 如何在单击自定义附件按钮时获取 UITableView 中单元格的索引路径?

cocoa - AMPathPopUpButton 类在哪里声明?

cocoa - 如何制作一个像 Mac OS X Dock 堆栈一样的窗口?

ios - Not Acceptable 属性值类型 - 所需类型 NSstring