libro
www.tuyano.com
初心者のためのiphone/ipadプログラミング入門

主なGUIコンポーネントの利用 (2/4)

作成:2011-03-22 08:06
更新:2011-03-22 08:17

■UISliderによるスライダー

UISliderは、いわゆる「スライダー」のGUIコンポーネントです。パソコンでは、マウスで上下や左右にドラッグして値を変化させるのに用いられますね。

スライダーは、一定範囲内から値を設定するのに用いられます。Interface Builderでは「Slider」という名前で用意されています。このSliderでは、値の最小値最大値初期値といった属性が用意されており、最低限これらを設定する必要があります。これらは、Attributes Inspectorの「Values」にある以下の項目で設定することができます。

Minimum――最小値。一番左端にノブを移動したときの値です。
Maximum――最大値。一番右端にノブを移動したときの値です。
initial――初期値。起動時の値です。

これらは、あらかじめInterface Builderでコンポーネントを配置した際に設定しておきます。これで、MinimumからMaximumまでの範囲内で値を設定できるようになります。

なお、このSliderの値は「実数」である、という点は頭に入れておきましょう。パソコンでは、一定の値ごとにステップを設定したり、目盛を表示したり、あるいは縦表示にしたりといった機能がありますが、iOSのSliderには、標準ではこれらの機能はありません。単純に、横長で、一定の範囲内を実数で指定するだけのシンプルな構造です。整数値などになおしたければ、プログラム内で実数から整数に処理することになるでしょう。

では、これも利用例をあげておきましょう。LabelSliderを1つずつ配置し、いかのようなプロパティとメソッドに接続をした状態として、下のリスト欄にサンプルのソースコードを掲載しておきます。

・プロパティ
@property (nonatomic, retain) IBOutlet UILabel *label1;
@property (nonatomic, retain) IBOutlet UISlider * slider1;

・メソッド
(IBAction)slider1Action:(id)sender;
Sliderでも、デフォルトでイベントをメソッドに接続した場合、「Value Changed」イベントに接続がされます。これにより、値を変更するとメソッドが呼び出されるようになります。Sliderの場合、ノブを持って動かしていると、リアルタイムにこのイベントが発生し続けるので、Labelに表示される値もリアルタイムに変わります。

このメソッドでは、現在の値を取り出し、それをLabelに設定しています。値の取得は以下のように行なってます。
float 変数 = [《UISlider》 value];
取得されるのはfloat値になりますので、必要ならばこれをintなどにキャストすれば整数化した値を取り出すことができるでしょう。また値を設定するものとして、
[《UISlider》 setValue:《float》];
このようなメソッドも用意されています。これで指定した値に変更されます。UISliderも、とりあえずこれらで設定されている値の操作ができれば、基本的な利用はできるようになるでしょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※MyIAppViewController.h

#import <UIKit/UIKit.h>

@interface MyIAppViewController : UIViewController {
	UILabel * label1;
	UISlider * slider1;
}

@property (nonatomic, retain) IBOutlet UILabel *label1;
@property (nonatomic, retain) IBOutlet UISlider * slider1;

- (IBAction)slider1Action:(id)sender;

@end


※MyIAppViewController.m

import "MyIAppViewController.h"

@implementation MyIAppViewController

@dynamic label1;
@dynamic slider1;

- (IBAction)slider1Action:(id)sender {
	float sld = [slider1 value];
	NSString* msg = [NSString stringWithFormat:@"Slider: %f",sld];
	[label1 setText:msg];
}

……中略……

@end

※関連コンテンツ

「初心者のためのiphone/ipadプログラミング入門」に戻る