簡體   English   中英

刪除/隱藏工具欄跟蹤分隔符

[英]Removing/hiding the toolbar tracking separator

我正在努力在我的應用程序中添加對全高側邊欄的支持,如 macOS 11 中所介紹的那樣。

訣竅是,當 window 選項卡欄可見時,我想關閉全高側邊欄。 當每個 window 中的側邊欄內容不同時,兩者不能很好地混合,就像在我的應用程序中一樣。 有關我想要做的示例,請參閱 Xcode(查看 > 顯示 Window 選項卡欄)。 有關我想要避免的示例,請參閱預覽(打開兩個多頁 PDF 並將它們放在一個選項卡式窗口中)。

工作原理:我觀察窗口的tabbedWindows屬性,並相應地在其styleMask中切換fullSizeContentView標志。 因此,當我隱藏和顯示標簽欄時,窗口的樣式會根據需要更新。

什么不工作:我需要在我的工具欄中有一個sidebarTrackingSeparator項目,以便在側邊欄上方有一些項目。 但是當fullSizeContentView關閉時,該項目顯示為普通分隔符。 我不希望它在 state 中完全可見。

沒有一種簡單的方法可以隱藏工具欄項,尤其是在它沒有視圖的情況下,事實證明這個沒有。

當 window state 切換時,我嘗試刪除分隔項並重新添加它,但這會導致 Cocoa 拋出異常,抱怨一次只能注冊一個跟蹤項。 這似乎是一個錯誤,但 Xcode 以某種方式管理它。

那么如何在沒有可見分隔符的情況下正確切換我的 window 和工具欄 state 呢?

看起來我已經解決了這個問題,當我在toolbarWillAddItem中看到它時保存分隔項,然后從toolbar(_:itemForItemIdentifier:willBeInsertedIntoToolbar:)返回它以避免創建新實例。 這樣,刪除和重新添加項目就可以正常工作而不會引發異常。

最后一個小障礙是不要盲目地刪除和重新添加分隔符。 window state 可能已在應用程序啟動期間保留,因此我不需要對 window 最初的顯示方式做出假設。

暫無
暫無

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

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