Redimensionner une fenêtre au click sur une ligne de TableView

ElectrobitchElectrobitch Membre
03:14 modifié dans API AppKit #1
Bonsoir amis Macusers :]

Pour m'entraà®ner à  Cocoa, j'aimerais développer une application qui permettrait de créer/éditer des fichiers .srt (sous-titres). Les sous-titres seraient présentés dans une NSTableView avec une colonne pour leur contenu (le sous-titre en lui-même), une pour le temps auquel il s'affiche (00:12:05:89 - h:min:s:ms) et une pour le temps auquel il disparaà®t (même format). Ce que je voudrais, c'est faire en sorte que quand l'utilisateur clique sur une ligne de la TableView, la fenêtre s'agrandisse en hauteur avec le style Préférences Système pour afficher divers TextFields permettant de modifier le sous-titre sélectionné. Malgré mes recherches Google, je n'ai rien trouvé (j'ai juste essayé l'article de ProjectOmega maissi vous connaissez autre chose...).

Merci d'avance de vos réponses.

PS: j'en profite pour demander : quelle méthode peut-on utiliser pour savoir si l'application est lancée pour la première fois ?

Réponses

  • Philippe49Philippe49 Membre
    03:14 modifié #2
    Cela fait beaucoup de questions.

    Pour répondre au titre, il faut d'abord définir un delegate de la tableView, et que ce delegate implémente l'une des méthodes delegate de NSTableView  (voir la doc de NSTableView pour cela). Citons :

    – tableView:shouldSelectRow:&nbsp; delegate method&nbsp; <br />– tableView:selectionIndexesForProposedSelection:&nbsp; delegate method&nbsp; <br />– tableView:shouldSelectTableColumn:&nbsp; delegate method&nbsp; <br />– tableViewSelectionIsChanging:&nbsp; delegate method&nbsp; <br />– tableViewSelectionDidChange:&nbsp; delegate method&nbsp;
    


    Dans cette redéfinition de la méthode, il faut faire envoyer le message  setFrame:display:  ou setFrame:display:animate: à  la [NSApp mainWindow]

    Mets déjà  cela au point, je présuppose que tu as déjà  lu Hillegass ou autre pour peupler la table view via le mécanisme du NSTableDatasource. 
  • ElectrobitchElectrobitch Membre
    03:14 modifié #3
    Merci beaucoup, je ne connaissais même pas cette fonction et elle est vraiment beaucoup plus pratique que celles utilisées dans le tuto de ProjectOmega ! Donc j'ai fait ce que tu m'as dit mais il y a un petit problème : quand je redimensionne moi-même la fenêtre (manuellement), la tableview ne colle pas au bas de la fenêtre donc un espace vide apparaà®t en dessous de la tableview. C'est normal puisque j'ai réglé ça dans IB parce que sinon, le redimensionnement dynamique agrandit uniquement la tableview, pas la fenêtre (dû au fait que la tableview doit "coller" au bas de la fenêtre)... Comment faire pour régler ça d'après toi ?

    Merci de ton aide en tous cas :]
  • Philippe49Philippe49 Membre
    03:14 modifié #4
    En général ces problèmes sont à  régler dans IB via l'inspecteur.

    Sinon, tu vas dans la doc de NSWindow. Tu trouves une delegate method du style windowWillResize:  toSize: et une autre windowDidResize:
    Tu déclares une de tes classes (le contrôleur de ton application sans doute)  comme delegate de la mainWindow. Lors d'un resize de l'utilisateur, les deux méthodes ci-dessus sont appelées, et tu réagis comme tu l'entends.
  • Philippe49Philippe49 Membre
    03:14 modifié #5
    Par ailleurs, il doit falloir régler à  la fois la scroll view et la table view.
  • schlumschlum Membre
    03:14 modifié #6
    En même temps, les tutos de ProjectOmega datent de 10.2, de l'eau a coulé sous les ponts depuis !
Connectez-vous ou Inscrivez-vous pour répondre.