2013-08-04 126 views
0

我試圖在窗口打開時給mac用戶顯示一個NSPopover,以便給用戶一條指令,但popover不會顯示。在窗口中打開NSPopoverDidLoad

如果我從一個按鈕調用完全相同的功能,然後popover成功顯示,但是當我在windowDidLoad中調用它時,它不會。

我可以看到,我介紹它的控件有一個界限,所以我不認爲這是問題。我也檢查過popover的行爲不是短暫的,所以不應該在沒有干預的情況下關閉。

在我的功能我傳遞一些變量到自定義初始化器,但它基本上是這樣的:

CustomViewController *instruction = [[CustomViewController alloc] init]; 
[instruction.popover showRelativeToRect:[aField bounds] ofView:aField preferredEdge:NSMaxXEdge]; 

init方法簡單地調用下面,和自定義視圖和控制器中掛接NIB。

[super initWithNibName:@"InstructionalView" bundle:nil] 

有沒有人來過這個?

+0

你能顯示實際設置「'.popover'」屬性的代碼嗎? –

+0

它是CustomViewController上的一個屬性,關係在NIB中設置。 '@property(assign)IBOutlet NSPopover * popover;'。 我的CustomViewController是NIB的文件所有者類,並且是popover的contentViewController。 – DownUnder

回答

0

您正在以編程方式分配並初始化您的CustomViewController對象,但彈出窗口在顯示之前沒有機會從筆尖加載(直接在alloc & init之後的行上)。

這兩條線之間,force a load via loadView, like this:

[instruction loadView]; 

您可能還需要做出一定的「instruction.popover」當您嘗試以顯示它不是nil,太。

+0

在調用showRelativeToRect之前嘗試在loadView中添加:但沒有區別。我也證實,popover不是零。 – DownUnder