強火で進め

このブログではプログラム関連の記事を中心に書いてます。

ほぼ日、MacのGUI - Progress Indicator(プログレスバー)

プログレスバーのサンプルです。NSProgressIndicatorクラスを主に使います。


プログラムが処理中であることを示すだけの場合、 indeterminate にチェックし、進捗を表示する場合はチェックをしないで使用するようです。

処理中であることを示すだけの場合はAjaxを使ったWebページでなどでもよく見かけるものと同様な Circlar Progress Indicator の方が良いような気がします。

indeterminate チェックするときとチェックしないときの2つのパターンがある場合に表示を統一感を持たせる場合に使えば良いのかな?

indeterminate のチェック有り、無しの使い分けについては公式サイトのこちらに記載があります。

Progress Indicators: About Progress Indicators
http://developer.apple.com/documentation/Cocoa/Conceptual/ProgIndic/Concepts/AboutProgIndic.html


現在の値の取得は doubleValue メソッド、設定は setDoubleValue: メソッドを使用します。

[progressIndicator doubleValue]
[progressIndicator setDoubleValue:0.0]

incrementBy: メソッドで現在の値に指定の値を加算します。
例えば現在の値が2.3の場合に以下のメソッドを実行すると2.4になります。

[progressIndicator incrementBy:0.1]

主な処理は以下の様になります。

- (IBAction)pushButton:(id)sender
{
	const double incremntValue = 3.0;
	
	if ([progressIndicator doubleValue] + incremntValue < 100.0) {
		[progressIndicator incrementBy:incremntValue];
	}else{
		[progressIndicator setDoubleValue:100.0];
	}
	NSLog(@"現在の値 : %f\n", [progressIndicator doubleValue]);
}

公式の解説はこちら。

NSProgressIndicator Class Reference
http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSProgressIndicator_Class/Reference/Reference.html

日本語の解説が良い人はこちらのSatoshi Oomoriさんのページを参照下さい。

http://www.oomori.com/cocoafw/ApplicationKit/NSProgressIndicator/index.html
※注記
http://www.oomori.com/cocodesu/index.html

ソースコードこちら