9
votes

Evénement NSTableView and BackSpace (Supprimer la ligne) - Dieditor / Straightesponder?

est-il possible de rendre mon NSTableView accepte un deleteevnt (Backspace OG Même cmd + Backspace)? J'ai un nsmenu où j'ai mon élément de menu Supprimer connecté à mon premier objet répondeur dans la nib.

Tous les pointeurs?


0 commentaires

4 Réponses :


9
votes

Une approche facile à mettre en œuvre:

  1. Ajouter +/- Boutons à votre interface dans IB et connectez-les à une ibaction Deleterecord
  2. avec le bouton Supprimer (-) sélectionné dans IB, accédez à des attributs Inspecteur> Bouton> Équivalent de clé
  3. Cliquez dans la case pour lancer l'enregistrement de votre clé de clé, puis appuyez sur la touche Suppr / Backspace

    Lorsque vous construisez votre projet, étant donné que vous implémentez la méthode Deleterecord, une KeyPress Backspace supprimera des enregistrements de votre TableView


1 commentaires

Ouais j'ai compris cela, mais ça me donne des problèmes quand je suis plus d'une vue de table à la fois :)



1
votes

Vous pouvez créer une sous-classe de NSTableView, remplacement de la clé comme: xxx

puis assurez-vous que tout NSTableView que vous souhaitez que la fonctionnalité de suppression utilise votre Sous-classe dans le constructeur d'interface au lieu de la nstableview habituelle.

Vous pouvez implémenter la méthode - (VOID) deleteitem par exemple comme celle-ci: xxx


2 commentaires

Si vous avez plusieurs vues que vous devez suivre séparément de la même documentationController, vous pouvez les identifier à l'aide des balises, c'est-à-dire entrez une balise pour l'affichage du constructeur d'interface, puis vérifiez la valeur de la valeur Self.tag dans le Clé: méthode.


Désolé, mais cette réponse ne doit pas être marquée correcte. Cette solution n'est absolument pas la meilleure pratique.



6
votes

La bonne façon de mettre en œuvre cette fonctionnalité consiste à utiliser des liaisons de clé:

  1. Sélectionnez l'élément de menu Supprimer dans IB et définissez une touche clé de la clé à la touche de retour arrière par exemple.
  2. Connectez l'action des éléments de menu à une méthode que vous avez écrite pour la gestion de la tâche. Cette méthode sera trouvée pour vous automatiquement la chaîne du répondeur, lorsque vous le connectez à travers le premier répondeur.
  3. Implémentez votre fonctionnalité Supprimer.

    Selon le type d'application que vous écrivez, il existe des méthodes de validation des délégués. Par ce qui signifie que vous pouvez définir l'état activé des éléments de menu. Pour une application basée sur des documents, cette validation se produit via - (bool) validateuserinterfaceItem: (id) anitem .


0 commentaires

9
votes

Ceci est une solution moderne utilisant nsviewcontroller et premier répondant .

L'élément de menu Supprimer dans le menu Modifier est connecté au sélecteur Supprimer: du premier répondeur. S'il n'y a pas d'élément de menu Supprimer , créez-en un et connectez-le à Supprimer: du premier répondeur (cube rouge).

  • Attribuez une clé équivalente à l'élément de menu Supprimer ( ou ⌘⌫ )
  • dans le contrôleur d'affichage Implémentez la méthode ibaction

    Swift: @ibaction Func Suppr Suppr (_ Sender: AnyObject)

    Objective-C: - (Ibaction) Supprimer: (ID) Sender

    et mettre dans la logique pour supprimer la ou les lignes de vue de la table.

    aucune sous-classe n'est nécessaire.


3 commentaires

D'où vient l'action de suppression? Je peux voir beaucoup d'actions comme celle-ci à IB, mais la norme NSresponder ne les définit pas tous.


@ Ibaction ou @ objc donne le même résultat. Manquant ceci fait supprimer l'élément de menu pour être greye


@ Kocmohabta Bonne question. Pour iOS, ils sont définis dans un protocole UIPROMPERStandARDITIONS; Le guide de traitement des événements de cacao les appelle les méthodes d'action standard de sélection et de modification et pointe vers le repère où elles ne sont pas documentées. Curieuse.