Что такое отправитель для ActionButton в Smalltalk? - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть 41 кнопка, которая должна стать невидимой, когда вы нажимаете на них в VisualWorks. Это всего лишь одна строка, делающая это.

(self builder componentAt: #buttonWhichCalledTheMethod) beInvisible.

Я пытался перейти с self, но это целая форма.

This context также выдает ошибку does not understand. И то и другое происходит после того, как я нажимаю на кнопку.

Есть ли способ использовать что-то в качестве отправителя?

1 Ответ

0 голосов
/ 25 апреля 2019

Я не уверен, что полностью понимаю, чего вы пытаетесь достичь. Кажется, вы пытаетесь использовать тот же код, чтобы сделать кнопку невидимой, что вызвало метод, который вы используете в данный момент. Из-за развязки виджетов и кода приложения не представляется возможным угадать, какая кнопка активировала определенный метод. Простым решением было бы сохранить словарь, в котором селекторы и идентификаторы кнопок отображаются и могут быть просмотрены.

Способ вызова этих методов - через блок, созданный в #actionFor:, где селектор передается, поэтому, если ваши кнопки имеют тот же идентификатор, что и их селекторы, вы можете переопределить #actionFor:, чтобы не только выполнить клавишу, но и также отключить кнопку.

PS: никогда не используйте thisContext или #doesNotUnderstand:

...