У меня есть окно, которое содержит элемент управления NSBox. В этом NSBox есть несколько других элементов управления (всплывающие окна, текстовые поля и т. Д.)
У меня есть два других NSBox в одном и том же NIB-файле, которые заполнены элементами управления, которые я хотел бы поменять с первым при определенных условиях. Я бы хотел, чтобы это происходило с хорошим эффектом перекрестного затухания, поэтому я делаю следующее:
В методе NSWindowController -awakeFromNib
:
[[self.myWindow contentView] setWantsLayer:YES];
В моем методе, где я переключаю представления, я использую этот код:
[[[self.myWindow contentView] animator] replaceSubview:previousView with:newView];
Это работает просто отлично, взгляды пересекаются, как я и ожидал. Проблема в том, что элементы управления в представлениях иногда исчезают без видимой причины. Это не всегда одни и те же представления (хотя кнопки NSPopUpButton кажутся особенно склонными к этому), и они обычно появляются снова, когда имеют фокус.
Нужно ли создавать резервные копии всех слоев управления?
Обновление: упаковка анимации в явной группировке не имела никакого значения. Включение setWantsLayer в Nib-файле также не имело значения, но интересно то, что когда я это делал, кнопки NSPopupupish исчезали до тех пор, пока не щелкнуло их содержащее представление. Установка Layer вручную на кнопки NSPopupup также не имеет значения.
Похоже, что у других была эта проблема, но я не могу найти опубликованных решений:
http://www.cocoabuilder.com/archive/message/cocoa/2008/3/30/202691
http://www.cocoabuilder.com/archive/message/cocoa/2008/4/25/205134