Как получить доступ к IBOutlets внутри обработчика событий?
У вас уже есть это. Выходы - это просто переменные экземпляра (или свойства, если вы объявите их как таковые); нет ничего особенного в аутлетах или методах респондента, которые заставляют одно не работать в другом.
Так почему же ваши розетки подключены в одних частях вашего кода и удерживают nil
в других?
Обычно это происходит потому, что вы создали объект MainDreamer в nib и создали его в коде, или вы создали его в двух отдельных nib.
В любом случае, это делает два объекта одного класса. Это не один и тот же объект, и у одного из них есть выходы, а у другого нет. Тот, на который вы нажимаете, не тот, который вы создали и подключили в наконечнике (или в одном из наконечников).
Способ доказать это можно было бы зарегистрировать self
как в методе mouseUp:
, так и в любом месте, где вы обнаружили розетки для подключения. Я ожидаю, что вы найдете разные значения self
: как я уже сказал, два объекта.
Решение состоит в том, чтобы удалить один из экземпляров и изменить его использование, чтобы использовать другой. Если вы создаете один из объектов в коде, это тот, который вы должны удалить, вместо того, чтобы в перо.