2010-04-13 6 views
0

J'ai un champ de texte qui peut être édité à la main, ou passer par un autre contrôle. (C'est un numéro de page, donc vous pouvez passer à la page 16 en tapant 16, ou vous pouvez faire défiler les boutons suivant/précédent) J'ai la valeur du champ de texte lié à une variable de page int.Comment un NSTextField sait-il que sa valeur a changé?

Il semble fonctionner correctement, lorsque vous tapez un numéro de page, il saute, lorsque vous faites défiler les pages, le numéro de page dans la zone de texte change de manière appropriée.

Cependant, à un certain niveau, lorsque je pagasse vers le haut et vers le bas, la zone de texte ne semble pas savoir que sa valeur a changé, car si je tape 1, elle ne fait rien. Il n'appelle pas la méthode set-bound ou quoi que ce soit. On dirait que le champ de texte pense "Je suis déjà 1, donc je n'ai pas besoin de faire quoi que ce soit." Même si c'était 5 parce que j'ai frappé 4 fois. Si je tape un nombre autre que 1, ça va là. Si je tape ensuite 1, ça va à la page 1, parce que maintenant il pense que c'est sur cette autre page.

Le problème semble être que je modifie la valeur du champ de texte par programme, mais une partie ne reçoit pas le message.

Est-ce que cela vous semble une explication raisonnable? Et de toute façon, des idées sur ce qui le cause?

grâce

Répondre

0

Solution: pour que le champ de texte se comporter correctement, je dois faire tout par la variable d'instance liée. Le problème était que la variable d'instance "page" n'existait pas réellement, il existe une méthode page et une méthode setPage, mais la page réelle est conservée ailleurs. Lorsque je m'assure d'appeler la méthode setPage à partir du code suivant/prev, cela semble fonctionner.

Questions connexes