Какао: initWithFrame из прокси пользовательского представления не вызывается
Согласно документу Apple " Создание пользовательского представления" этот метод следует вызывать, если вы используете настраиваемый прокси-сервер представления в Интерфейсном Разработчике.
Если вы не создали палитру Interface Builder для своего пользовательского представления, есть два метода, которые можно использовать для создания экземпляров вашего подкласса в Interface Builder. Первый - использование прокси-элемента Custom View в палитре контейнеров Interface Builder. Это представление является заменой для пользовательского представления, позволяя вам позиционировать и изменять размер представления относительно других представлений. Затем вы указываете подкласс NSView, который представление представляет с помощью инспектора. Когда файл пера загружается приложением, прокси-сервер настраиваемого представления создает новый экземпляр указанного подкласса представления и инициализирует его, используя метод initWithFrame:, передавая при необходимости все флаги автоматического изменения размера. Затем экземпляр представления получает сообщение awakeFromNib.
К сожалению, это не было названо в моем случае. Кто-нибудь должен был иметь дело с этим вопросом?
1 ответ
В последних версиях Xcode наблюдается новое поведение при развертывании на последних версиях ОС. В инспекторе файлов NIB проверьте, установлен ли флажок "Поведение во время выполнения - создание экземпляра: предпочтительный кодер". Если это так, снимите флажок, если вам нужно / хотите -initWithFrame:
называется для ваших пользовательских просмотров. Или оставьте его отмеченным и воспользуйтесь тем фактом, что погрузочное оборудование NIB теперь будет вызывать -initWithCoder:
, Конечно, вы должны убедиться, что ваше свойство класса поддерживает NSCoding
путем кодирования и декодирования любого собственного внутреннего состояния, которое имеет смысл сериализовать.