簡體   English   中英

為什么NSStatusItem顯示多次?

[英]Why is the NSStatusItem displaying multiple times?

NSStatusItem附加了NSMenu,並且NSMenu的按鈕之一打開一個NSWindow。 只要單擊這些按鈕之一,該窗口就會按預期打開並正常工作,但是NSStatusItem的另一個顯示將打開。

NSStatusItem是一個時鍾,因此我可以看到它正在正確更新。 但是,克隆的NSStatusItem沒有自己的菜單。 如果我按下使窗口次數更多的按鈕,則會彈出NSStatusItem的更多克隆版本。

除此之外,一切正常。

沒有太多的信息可利用,但是我沒有其他可以幫助您的信息。 我很樂意提供更多信息或嘗試一些操作。

編輯:每次單擊該按鈕時,都會以某種方式調用awakeFromNib,這就是為什么另一個半工作的NSStatusItem發生的原因。

編輯:臨時解決方法是將awakeFromNib方法放在dispatch_once

編輯:添加了單擊按鈕時觸發的方法,如@zpasternack所建議

- (IBAction)preferences:(id)sender {
    self.windowController = [[NSWindowController alloc] initWithWindowNibName:@"PreferencesWindow"];
    [[self windowController] showWindow:self];
}

NSStatusItem是否包含在PreferencesWindow筆尖中? 也許可以這樣解釋,因為每次單擊按鈕時都在加載筆尖。

另外,是否有理由每次單擊按鈕都需要重新創建該窗口? 也許您只能第一次做?

- (IBAction)preferences:(id)sender {
    if( self.windowController == nil ) {
        self.windowController = [[NSWindowController alloc] initWithWindowNibName:@"PreferencesWindow"];
    }
    [[self windowController] showWindow:self];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM