Откройте NSPopover в windowDidLoad
Я пытаюсь отобразить NSPopover в приложении Mac, когда открывается окно, чтобы дать пользователю инструкцию, но всплывающее окно не будет отображаться.
Если я вызываю ту же самую функцию от нажатия кнопки, то всплывающее окно успешно отображается, но когда я вызываю его в windowDidLoad, оно не отображается.
Я вижу, что элемент управления, от которого я его представляю, имеет границы, поэтому я не думаю, что это проблема. Я также проверил, что поведение поповера не является временным, поэтому он не должен закрываться без вмешательства.
В моей функции я передаю некоторые переменные в пользовательский инициализатор, но в основном это просто так:
CustomViewController *instruction = [[CustomViewController alloc] init];
[instruction.popover showRelativeToRect:[aField bounds] ofView:aField preferredEdge:NSMaxXEdge];
Метод init просто вызывает следующее, и пользовательское представление и контроллер подключаются в NIB.
[super initWithNibName:@"InstructionalView" bundle:nil]
Кто-нибудь сталкивался с этим?
1 ответ
Вы программно размещаете и запускаете свой объект CustomViewController, но у всплывающего окна нет шансов загрузить его из пера до его отображения (в строке сразу после alloc & init).
Между этими двумя линиями форсируйте нагрузку через loadView
, как это:
[instruction loadView];
Вы также можете убедиться, что " instruction.popover
"не равно нулю, когда вы пытаетесь отобразить это тоже.