Как NSTextField узнает, что его значение изменилось?

У меня есть текстовое поле, которое можно редактировать вручную или установить с помощью другого элемента управления. (Это номер страницы, поэтому вы можете перейти на страницу 16, набрав 16, или вы можете пролистывать страницы вверх и вниз с помощью кнопок «следующая/предыдущая») У меня есть значение текстового поля, связанного с переменной int страницы.

Кажется, он работает правильно, когда вы вводите номер страницы, он прыгает, когда вы просматриваете страницу вверх и вниз, номер страницы в текстовом поле изменяется соответствующим образом.

Однако на каком-то уровне, когда я листаю страницы вверх и вниз, текстовое поле, похоже, не знает, что его значение изменилось, потому что, если я наберу 1, оно ничего не сделает. Он не вызывает связанный метод set или что-то в этом роде. Похоже, текстовое поле думает: «Мне уже 1, поэтому мне ничего не нужно делать». Хотя это было 5, потому что я ударил следующие 4 раза. Если я ввожу число, отличное от 1, оно идет туда. Если я ТОГДА наберу 1, он перейдет на страницу 1, потому что теперь думает, что находится на той другой странице.

Кажется, проблема в том, что я изменяю значение текстового поля программно, но какая-то часть не получает сообщение.

Это кажется разумным объяснением? И в любом случае, какие идеи о том, что вызывает это?

Спасибо


person Brian Postow    schedule 13.04.2010    source источник


Ответы (1)


Решение: для того, чтобы текстовое поле вело себя правильно, мне нужно делать все через связанную переменную экземпляра.

Проблема заключалась в том, что переменной экземпляра «страницы» на самом деле не существует, есть метод страницы и метод setPage, но фактическая страница хранится в другом месте. Когда я обязательно вызываю метод setPage из следующего/предыдущего кода, он работает.

person Brian Postow    schedule 13.04.2010