我正在研究我的第一个主要的Cocoa应用程序,用于本科研究项目。
该应用程序是基于文档的,并使用Core Data。其中一个实体是抽象实体,Page. Page
是几种类型页面的父类:即PageWithHeaderAndFooter, PageWithTwoColumns, BasicPage
等。Page
具有所有页面共有的属性,例如标题和作者。每种特定类型的页面都有一定数量的布局块(PageWithHeaderAndFooter
有三个:页眉,页脚,正文。BasicPage
有一个:body。等等。此外,所有Page
子类定义特定于布局的某些方法的实现。
另一个相关实体是Style
,它定义了Page
的视觉外观。 (将Page
视为HTML,将Style
视为CSS。)
我希望我的应用程序有一个类似iTunes / Mail的源列表。 (一个是Pages,另一个是Styles。)我非常清楚如何编写分段源列表(this was a great help)。
然而,经过几个小时的轰炸和毫无结果的谷歌搜索,这是我无法弄清楚的:
源列表中列出的页面和样式,当您选择其中一个时,该对象的所有相关字段都显示在右侧(主要是NSTextViews,弹出菜单等)。
我把它解决了,并在Interface Builder中完成了所有绑定。
问题是,如果我的源列表包含不同类型的页面,如何根据所选页面的类型在右侧显示不同的视图?例如,如果选择了BasicPage
,我只需要您在上面看到的内容:常规页面内容和一个与body
的{{1}}字段对应的NSTextView。但是,如果我选择一个BasicPage
,我想显示一般页面内容和三个NSTextViews(一个用于页眉,正文和页脚)。如果我选择了PageWithHeaderAndFooter
,我想显示各种流行菜单,颜色井等。
至少对于页面,我们只讨论一个或多个NSTextView,每个NSTextView对应于相应实体的String属性。
你会怎么做?
感谢您的帮助!
答案 0 :(得分:1)
我有一个项目列表,它们是3种类型之一,但都非常相似。
我在推送之前将Entity
设置到视图控制器中,然后在pushee的viewDidLoad
中检查我所拥有的entity
的类型,并通过指定不同的方式来布局信息nibs加载。
if([[entity entityType] isEqualToString:@"TypeA"]) {
[[NSBundle mainBundle] loadNibNamed:@"TypeAView" owner:self options:nil];
} else if(...) { .....
对我来说这很好用。