Я работаю над своим первым крупным приложением Cocoa для исследовательского проекта для студентов.
Приложение основано на документе и использует базовые данные. Одна из сущностей является абстрактной сущностью, Page. Page
является родительской для нескольких типов страниц: то есть PageWithHeaderAndFooter, PageWithTwoColumns, BasicPage
и т. Д. Page
имеет атрибуты, такие как заголовок и автор, которые имеют все общие страницы. Каждый конкретный тип страницы имеет определенное количество блоков макета (PageWithHeaderAndFooter
имеет три: заголовок, нижний колонтитул, тело. BasicPage
имеет один: тело. И т. Д.) Кроме того, все подклассы Page
определяют специфичные для макета реализации определенных методы.
Другая соответствующая сущность - Style
, которая определяет визуальный вид Page
. (Думайте о Page
s как о HTML и Style
как о CSS.)
Мне бы хотелось, чтобы у моего приложения был список источников в виде iTunes / Mail-подобия с разделами. (Один раздел будет «Страницы», другой - «Стили».) У меня есть довольно хорошая идея, как составить секционированный список источников (, это было очень полезно ).
Однако, после нескольких часов тряски головой и бесплодного поиска в Google, вот что я не могу понять:
Страницы и стили перечислены в списке источников, и когда вы выбираете одно из них, все соответствующие поля для этого объекта появляются справа (в основном NSTextViews, всплывающие меню и т. Д.).
Я изложил это и сделал все привязки в Интерфейсном Разработчике.
Проблема в том, что если мой список источников содержит разные типы страниц, как мне получить другое представление для отображения справа в зависимости от типа выбранной страницы? Например, если выбран BasicPage
, я хочу только то, что вы видите выше: общий материал страницы и один NSTextView, который соответствует одному полю body
из BasicPage
. Но если я выберу PageWithHeaderAndFooter
, я хочу отобразить общий материал страницы плюс три NSTextViews (один для верхнего, основного и нижнего колонтитула). Если у меня выбран Style
, я хочу отобразить различные всплывающие меню, цвета колодцы и др.
По крайней мере, для страниц мы говорим только об одном или нескольких NSTextViews, каждый из которых соответствует атрибуту String соответствующей сущности.
Как бы вы это сделали?
Спасибо за вашу помощь!