2011-01-12 15 views
0

私は基本的なアプリケーションを作成し、サブクラス化されたNSViewを作成し、それをインターフェイスビルダのカスタムビューとして追加しました。すべての作品は大丈夫です。NSProgressIndicatorの問題 - おそらくNSViewのサブクラスですか?

しかし、特定のことが正しく機能しないため、NSViewが正しくサブクラス化されているかどうか疑問です。具体的には、NSProgressIndicatorを使用する場合は、startAnimating:およびstopAnimatingを不確定に使用できますが、incrementByを使って何かを試してみると何もしません。

確定NSProgressIndicatorのデフォルト値を50.0に設定したとしても、IBが正常に見えても、アプリが0.0で起動されたときに表示されます。

私のNSProgressIndicatorはIBOutletとして正しく接続されています。隠すように伝えることはできますが、アニメーション化することはできません。しかし、私はこの問題が実際にNSViewのサブクラス(Quick Look not firingなど)だと思うようにする他の問題もあります。

私のサブクラスでは、単純にinitWithFrame:とdrawRectメソッドをオーバーライドして、[super]メソッドを呼び出しました。私が言ったように、私はそれをインターフェイスビルダのカスタムビューとして配置し、それをMyCustomViewに変更しました。ほとんどの場合、すべてうまく動作します...?

これを間違ってサブクラス化するか、インタフェースビルダーで何か正しく実行しないのですか?私はいくつかの小さなものが欠けているようですね!

答えて

0

initではなくinitWithFrame:をオーバーライドする必要があります。それはおそらく問題です。

進捗インジケータに注意するもう1つのこと:多くの作業を行っている場合は、次の実行ループ反復に遅延させて進行インジケータをリフレッシュさせることができます。遅延perform(performSelector:withObject:afterDelay :)またはUIを更新できるようなものを使用します。

+0

私はinitWithFrameをやっています...ありがとうございます。私は.xibを読み込み、awakeFromNibを上書きする必要がありますか? – mootymoots

1

解決しました。私が最初に私のawakeFromNibメソッドで次のようにやっていた

- (void)awakeFromNib{ 
    [super awakeFromNib]; 
} 

が判明、それはNSViewの直下だ場合、awakeFromNibはスーパー呼び出すべきではありません。 superを削除すると問題が解決しました。

- (void)awakeFromNib{ 
} 
関連する問題