2008-11-29 8 views
2

Je suis dans une situation hypothétique dans laquelle je dois énumérer des élèves dans une école. J'ai un contrôleur de vue de table qui a plusieurs sections, représentant une école. Chaque école a des étudiants suivants. Maintenant, j'ai l'obligation de donner à l'utilisateur la possibilité de voir tous les élèves pour une école en particulier en cliquant sur le nom de l'école dans une vue de niveau supérieur de mon contrôleur de navigation. La question ici est, est-ce que je branche mon "StudentsViewController" actuel et ajoute une logique complexe afin de lui permettre d'afficher les étudiants d'une école, ou est-ce que vous experts recommanderiez une nouvelle classe pour manipuler cette table?Sous-classe d'un UIViewController, quand et quand ne pas

Les compromis sont plutôt simples en ce sens que je peux en effet tout mettre dans un seul contrôleur de vue au prix d'une logique confuse/complexe. D'autre part, il y aura beaucoup de code répété si j'écris un autre contrôleur qui gère les étudiants d'une école individuelle.

Que recommandent les experts sur celui-ci?

Répondre

1

Je pense que cela dépend du modèle que vous utilisez pour stocker vos données. Disons que vous avez un tableau de tableaux, (tableau d'écoles, chaque école détient un tableau d'étudiants.)

Dans ce cas, je voudrais coller avec un tableController.

La logique ne doit pas être poilue si la conception de votre modèle est simple, et je pense que ce serait plus propre et "plus correct" que plusieurs sous-classes dans ce cas. N'oubliez pas où que le système vous dépasse NSIndexPath vous avez les numéros de section et de ligne. (école et étudiants) indexPath.section et indexPath.row

2

Je pense que la chose la plus simple à faire serait d'avoir une seule classe qui gère un réseau d'écoles. Si ce tableau ne contient qu'un seul élément, vous pouvez (facultativement) n'avoir aucun titre affiché pour la section unique. Sinon, toutes les sections ont des titres.

Mettez toutes vos écoles dans un tableau, et quand une seule école doit être affichée, collez-la dans un tableau par elle-même, et poussez-la dans votre contrôleur de vue.

Nous faisons une chose très similaire dans l'une de nos applications, essentiellement de la même manière.

Questions connexes