В ответ на пользовательское событие я хочу:
- добавить новый NSView в окно, а затем
- показать NSPanel, расположенный чуть ниже этого представления
Я сделал каждую половину этого. Я могу добавить новое подпредставление, и представление контейнера -updateConstraints
идентифицирует его и добавляет правильные ограничения макета, так что при следующем выполнении макета он будет правильно расположен в окне. Кроме того, у меня есть подкласс NSWindowController, который выводит панель на экран.
К сожалению, есть проблема с заказом. Контроллер моей панели просто смотрит на новое свойство NSView frame
, чтобы решить, куда его поместить, но во время этой итерации основного цикла событий метод -layout
еще не был вызван, поэтому он все еще находится в (0,0).
(Если я разделю эти две части функциональности и потребую два отдельных пользовательских события для «добавить представление» и «создать панель», тогда панель будет правильно расположена под представлением.)
Есть ли способ прикрепить NSPanel к NSView, как если бы с ограничением макета? Или есть способ сказать «сделай это (вещи оконного контроллера), но только после следующего вызова -layout
»?