2009-08-01 5 views
1

Je travaille sur ma première application Cocoa majeure pour un projet de recherche de premier cycle.Plusieurs vues et liste de sources dans une application Core Data

L'application est basée sur des documents et utilise des données de base. L'une des entités est une entité abstraite, Page. Page est parent de plusieurs types de pages: PageWithHeaderAndFooter, PageWithTwoColumns, BasicPage etc Page possède des attributs, tels que le titre et l'auteur, que toutes les pages ont en commun. Chaque type spécifique de page a un certain nombre de blocs de mise en page (PageWithHeaderAndFooter a trois: en-tête, pied de page, corps BasicPage a un: corps, etc.) En outre, toutes les sous-classes Page définissent des implémentations spécifiques à la mise en page de certaines méthodes. L'autre entité pertinente est Style, qui définit l'apparence visuelle d'un Page. (Pensez à Page s comme HTML et Style comme CSS.)

Je voudrais que mon application ait une liste source iTunes/Mail avec des sections. (Une section serait Pages, l'autre serait Styles.) J'ai une assez bonne idée comment faire la liste des sources sectionnées (this was a great help).

Cependant, après les heures de headbanger et googler inutile, voici ce que je ne peux pas comprendre:

Pages et styles répertoriés dans la liste des sources, et lorsque vous sélectionnez l'un d'eux, tous les domaines pertinents pour cet objet apparaît à droite (principalement NSTextViews, menus déroulants, etc.). Je l'ai exposé et j'ai fait toutes les liaisons dans Interface Builder.

Le problème est que, si ma liste de sources contient différents types de pages, comment puis-je obtenir une vue différente à afficher à droite en fonction du type de page sélectionné? Par exemple, si un BasicPage est sélectionné, je veux juste ce que vous voyez ci-dessus: la page générale et un NSTextView qui correspond au champ body de BasicPage. Mais si je sélectionne un PageWithHeaderAndFooter, je veux afficher le contenu général de la page plus trois NSTextViews (un pour l'en-tête, le corps et le pied de page.) Si j'ai un Style sélectionné, je veux afficher divers menus contextuels, puits de couleurs, etc.

Pour les pages au moins, nous parlons seulement d'un ou plusieurs NSTextViews, dont chacun correspond à un attribut String de l'entité respective.

Comment voulez-vous faire cela?

Nous vous remercions de votre aide!

Répondre

1

J'ai une liste d'éléments qui sont l'un des 3 types, tous sont très similaires cependant.

J'ai mis le Entity dans le contrôleur de vue avant de pousser, puis dans viewDidLoad du Pushee-je vérifier quel type de entity je et mise en page les informations différemment en spécifiant différentes grué à charger.

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

Cela fonctionne très bien, pour moi.

Questions connexes