Откройте 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 "не равно нулю, когда вы пытаетесь отобразить это тоже.

Другие вопросы по тегам