Изменить размер 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;
}
Другие вопросы по тегам