Intégrez NSStepper avec NSTextField
J'ai besoin d'avoir un NSTextField de travail avec un NSStepper comme étant un contrôle afin que je puisse modifier une valeur entière, soit en modifiant directement sur le champ de texte ou à l'aide de la flèche de défilement vers le haut/flèche vers le bas.
De l'IB, j'ai ajouté deux de ces contrôles, alors connecté NSStepper de takeIntValueFrom à NSTextField et qui fait la valeur de texte à changer à chaque fois que je clique sur le moteur pas à pas des flèches. Le problème est que si je modifier le champ de texte puis cliquez sur le moteur pas à pas encore, il va oublier la valeur que j'ai modifié manuellement et utiliser le moteur interne de valeur.
Quelle est la meilleure/la plus simple façon d'avoir le moteur pas à pas de la valeur d'être mis à jour chaque fois que le champ de texte valeur est modifiée?
source d'informationauteur Carlos Barbosa
Vous devez vous connecter pour publier un commentaire.
Sauter le
takeIntValueFrom:
méthode. Au lieu de cela, lier les deux vues de la même propriété dans votre contrôleur. Vous pouvez également créer un formateur et d'accrocher le champ de texteformatter
prise.Je voudrais avoir un modèle avec une variable de type entier, qui représente la valeur de deux contrôles.
Dans mon contrôleur, je voudrais utiliser une IBAction, connecté à la fois à des contrôles, et les deux IBOutlets, un pour chaque contrôle. ensuite, j'aurais une méthode pour la mise à jour de points de vente à partir du modèle de la valeur.
C'est le principe. Comme dit par Peter Hoseyun formateur peut être utile sur votre champ de texte, à moins de prendre des valeurs min et max du moteur pas à pas en compte.
J'ai trouvé moyen facile est de se lier à moteur pas à pas de la valeur d'entrée et la valeur d'entrée pour moteur pas à pas
J'ai fait comme Peter Hosey suggéré comme il me semble le plus propre approche. Créé une propriété dans mon controller:
ensuite au bureau de l'IB pour les deux contrôles dans l'onglet Liaisons, j'ai mis le "Bind:" case à cocher sélectionnée mon contrôleur, puis sur le "Modèle de Chemin de Clé" terrain de jeu "editValue" et voilá, il a travaillé! Avec seulement 3 lignes de code et IB de l'édition. Et si j'ai besoin de changer la valeur sur mon contrôleur je utiliser setEditValue: et le champ de texte est mis à jour.
Si l'on est de garder la trace de la valeur d'un champ dans un modèle, comme un numéro de page en cours, alors il n'y a pas besoin de garder une copie dans le moteur de contrôle. Je viens de configurer le contrôle pour avoir une valeur initiale de 0, et une gamme de -1 à 1. Dans le IBAction méthode pour le moteur pas à pas de contrôle, qui est appelée pour tout de la souris (ou de l'auto-répétition) sur le contrôle, demander à sa valeur actuelle, qui sera 1 si la flèche a été cliqué, ou -1 pour la flèche vers le bas. Rétablir immédiatement la valeur courante du contrôle à 0, et ensuite mettre à jour le modèle et rien d'autre (le champ de texte associé, ou une nouvelle page, etc.) avec une nouvelle valeur en fonction de la direction 1 ou -1. E. g.,
De cette façon, le moteur pas à pas de contrôle n'a pas à être lié à toutes les valeurs dans le modèle.