2009-06-29 1 views

答えて

6

これは、それがあるべきよりも硬いですので、それはMailアプリケーションで行われているように進行状況インジケータを実装する方法を教えてくださいAppleはNSProgressIndicatorCellを提供していません。テーブルビューとアウトラインビューはカスタムセルが表示されているというアイデアをサポートしていますが、カスタムサブビューを簡単にサポートするようには設定されていません。

このようになると、実際にテーブルビューの行にインストールすることなく、完全なNSProgressIndicatorビューをウィンドウの目的の場所に表示してアニメーション表示するにはどうすればよいですか?

私が使用したトリックは、そのままNSProgressIndicatorをアウトラインまたはテーブルビューのサブビューとしてインストールすることです。サブビューを追加する場所を見つけるには、「行内」のように見えるので、frameOfCellAtColumn:row:メソッドを使用します。アウトラインビューのその位置に進捗インジケータを配置することができます。進行状況インジケータが回転したら、それ以上表示したくないので、スーパービューから削除して破棄してください。

アウトラインビューのサイズが変更された場合、/が正しい方向に浮動するように、進行状況インジケータに必要な自動サイズ設定フラグを設定する必要があります。

希望の最終結果を得るために、このような他のハッキングがあると確信しています。私はこのトリックを達成するためのスーパークリーンな方法はないと思います。

+0

これは非常に良い解決策ですが、時にはセルテキストを省略記号で切り取ることもできます。だから、セルは、テキストの幅を減らすための '外部'インジケータについて知っている必要があります:http://tinyurl.com/mkmfat – Stream

+0

私がしたことは、実際に進捗インジケータが自分自身のテーブル。これは、テーブルのこの領域が "使用不可能"であるが、正当なセル内容が進捗インジケータ領域と重ならないことを保証するため、ちょっとぎこちない。 – danielpunkass

+0

大変申し訳ありませんが、余分な列は非常に便利な解決策ではありません:)メールで使用されている実装がとても好きです。このスレッドで言及されているウィーンのアプリケーションは、同じ結果を得るためにセルのviewControlメソッドを使用します。私はこのようにしてみよう。 – Stream

3

Viennaは、ソースリストにこれを持つオープンソース(Apacheライセンス)のフィードリーダーです。彼らがどのようにそれをしたか見るにはthe Vienna source codeを見てください。

+0

ソースコードのリンクはhttps://github.com/ViennaRSS/vienna-rssです。 – jemeshsu

2

ウィーンの実装は完璧ではありません。フォルダにフィードを追加し、読み込み中に進行状況インジケータがビジー状態の場合はそのフォルダを折りたたみます。進行状況インジケータが同じ場所で実行されているのが見えます。

関連する問題