NSTabView et Controller

06:05 modifié dans API AppKit #1
Bonjour,

J'utilise dans mon application un NSTabView, comportant pour le moment deux TabViewItem mais je vais en rajouter. Dans l'architecture de mon application j'ai un seul Controller pour l'ensemble de la fenêtre principale et donc pour l'ensemble des TabViewItem. Problème en faisant ici j'ai l'impression que mon Controller grossit beaucoup trop (déjà  2 000 lignes de code).

J'ai commencé à  réfléchir à  l'utilisation d'un Controller par NSTabView mais je vois mal comment les initialiser de manière à  ce qu'ils soient synchronisés avec le Controller principal (qui gère les données).

Qu'en pensez-vous ? Comment faà®tes-vous pour gérer vos NSTabViews ?

Merci d'avance de vos réponses.

Réponses

  • 06:05 modifié #2
    On avait déjà  abordé ce point dans un autre post, mais je te remets la solution que j'avais proposé de manière détaillée (non fait avant ;)). Dans ton controlleur principal, tu rajoutes un tableau comme variable d'instance, qui contiendra les sous contrôlleurs (par exemple TabViewItemController). L'interface de ces sous-contrôlleurs doit avoir (au moins) les méthodes suivantes: initWithMainController:, view, loadData:; data; label. Ensuite tu crées un nib par vue, avec une sous classe de NSTabViewItemController comme File's owner. Au moment du awakeFromNib, tu charges les sous-controlleurs, et rajoute les tabviewitem à  ce moment. Pour créer les instances, tu utilises la méthode TabViewItemController initWithMainController:. Voilà  voilà .
  • 06:05 modifié #3
    Merci merci, désolé pour le doublon, j'avais juste regarder rapidement s'il n'y avait pas un sujet correspondant et n'avais rien trouvé.

    Bon donc c'est bien ce qu'il me semblait il faut utiliser plusieurs fichiers .nib, domaine dans lequel je suis néophyte, j'ai toujours tout fait dans un seul fichier .nib. Bon je regarderais dans un livre ce soir s'il n'y a pas un chapitre sur le sujet. Sinon y-a-t-il un tutoriel sur ProjectOmega ou ailleurs sur le net que vous me conseilleriez sur le sujet ?
  • 06:05 modifié #4
    Dans la méthode qui renvoie la vue, tu mets un code du genre:
    -(NSView*)view {<br />&nbsp; &nbsp; if (!view) [NSBundle loadNibNamed:@&quot;LeNomDuBundleSansNib&quot; owner:self];<br />&nbsp; &nbsp; return view;<br />}
    

    où view est le nom d'un outlet qui se raccorde à  la future vue du tabview item. Pour le reste, ça ne devrait pas causer de difficultés je pense.
  • ClicCoolClicCool Membre
    06:05 modifié #5
    Salut :)

    Pour ma part j'ai pas une grande habitude de cette façon de procéder (qui est très bonne et recommandée par Apple, c'est pas la question ;) )

    Mais, pour le "racordement" de l'Outlet view du contrôleur à  la NSView,  ne faut-il pas préciser que dans la construction sous I.B. du nib que l'on doit charger ainsi, c'est dans l'instance du File Owner que l'on doit ajouter l'Outlet view et que la NSView doit donc être connecté avec l'outlet view du File Owner et donc du contrôleur dès que le nib sera chargé avec la méthode de Renaud ?

    Phrase trop longue me dirait à  fort juste titre un Blege averti, mais bon j'aime bien les phrases longues qui n'en finissent pas ne serait-ce que pour bien marquer mon identité et pour aussi, à  l'occasion, noyer le poisson dans un troll parceque je vous ai pas dit mais, dans l'éventualité d'un dépard de troll sur O.C., je m'entraine parfois à  faires des phrases longues du genre qui n'en finissent pas mais bon aujourd'hui j'ai pas fait exprès c'est juste qu'elle s'est allongée toute seule comme le nez de Pinocchio et que je n'y suis pour rien des fois ça vient comme ça quoi et de toutes façons c'est une question idéologique cette histoire des Français qui ferraient des phrases trop longues mais bon désolé si c'est pas clair hein ?  :P
    ça y'est j'ai pété un cable on dirait   >:D
  • muqaddarmuqaddar Administrateur
    06:05 modifié #6
    Elle est trop courte ta phrase ClicCool.
    Du coup, on comprend tout, tout de suite. Ennuyant.   >:D
  • 06:05 modifié #7
    En résumé, le file's owner du nib doit être une sous-classe de TabViewItemController, et c'est à  lui qu'il faut raccorder les outlets. Merci de cette précision ClicCool.

    Sinon ClicCool, les allemands font aussi des phrases très longues. privatejokegood.gif
Connectez-vous ou Inscrivez-vous pour répondre.