2009-06-29 50 views

回答

6

這是難度比它應該是,因爲Apple不提供NSProgressIndicatorCell。儘管表格和大綱視圖支持在其中顯示自定義單元格的想法,但它們並未設置爲輕鬆支持自定義子視圖。

所以,訣竅就是,如何獲得一個完整的NSProgressIndicator視圖,以便在窗口中的所需位置顯示和動畫,而無需將其實際安裝到表視圖行中?

我使用的技巧是字面上安裝NSProgressIndicator爲綱或表視圖本身的一個子視圖。要查找添加子視圖的位置,因此它看起來像是「在行中」,請使用frameOfCellAtColumn:row:方法。然後,您可以在大綱視圖的該位置中放置進度指示器。當您完成進度指示器的旋轉時,您可能不想再顯示它,因此只需將其從超級視圖中移除並丟棄即可。

您將要確保你設置的進度指示器所需的自動調整大小的標誌,以便它在正確的方向浮動當/如果你的大綱視圖調整大小。

我敢肯定有其他黑客這樣達到期望的最終結果。我不認爲有什麼超級乾淨的方法來完成這個訣竅。

+0

這是一個很好的解決方案,但有時單元格文本可以通過省略號進行修剪。因此,單元格應該知道「外部」指示符以減​​少文本的寬度:http://tinyurl.com/mkmfat – Stream 2009-06-29 15:44:55

+0

我所做的實際上是給出了我期望進度指示器顯示其自己的(空白)列的區域桌子。這有點笨拙,因爲表格的這個區域「不可用」,但它確保合法的單元格內容不與進度指示符區域重疊。 – danielpunkass 2009-06-29 16:14:58

3

Vienna是一個開放源碼(Apache許可)饋給閱讀器具有此在其源列表。你應該看看the Vienna source code看看他們是如何做到的。

2

維也納的實現是不完美的。將一個提要添加到文件夾,然後在加載時進度指示器正忙於摺疊該文件夾。您將看到進度指示器仍在同一位置運行。

相關問題