Изменить размер NSPopover после его показа
У меня есть NSPopover, который находится в NSView. Я создаю поповер и добавляю вид так:
NSPopover *thePopover = [[NSPopover alloc] init];
[thePopover setContentViewController:myViewController];
Затем я показываю поповер и устанавливаю размер:
[thePopover setContentSize:NSMakeSize(300.0f, 160.0f)];
В этот момент всплывающее окно видно, и его представление содержимого является правильным. Есть ли способ, которым я могу изменить размер поповера на этом этапе, не закрывая и не отображая его повторно?
3 ответа
Я смог добиться этого, перезвонив контроллеру, который запустил поповер через протокол делегата, и сбросил размер, используя setContentSize:
Из документации:
Размер содержимого всплывающего окна устанавливается в соответствии с размером представления содержимого, если установлен контроллер представления содержимого.
Итак, установите рамку представления контента поповера.
NSWindow
имеет частную собственность _popover
которые хранят ссылку на NSPopover
, Вы можете использовать его для доступа к NSPopover
экземпляр из любого NSViewController
(а затем позвоните setContentSize:
на нем) вот так:
- (NSPopover *)popover
{
NSWindow *window = self.view.window;
NSPopover *popover = [window valueForKey:@"_popover"];
return popover;
}