UISwitchを利用して、スイッチコントールを作る方法を解説します。
スイッチコントールは以下の手順で作成します。
alloc関数とinit関数を利用してUISwitchクラスのインスタンスを生成します。
UISwitch * switch1 = [ [ [ UISwitch alloc ] init ] autorelease ];
switch1.frame = CGRectMake( 40, 50, 1, 1 );
スイッチコントールのサイズは以下のように固定となります。
frame/boundsプロパティやinitWithFrame:関数を利用してコントールの位置/サイズを指定しても、サイズ情報は無視され、位置のみ変更できます。
onプロパティでスイッチコントロールのオン/オフ状態を変更します。
setOn:animated関数を利用すると、オン/オフ状態をアニメーション付きで切り替えることができます。onプロパティを利用するとアニメーションは付きません。
[ m_objSwitch2 setOn:YES animated:YES ];
スイッチコントロールに表示されるテキストを変更することはできません。
スイッチコントロールは、以下の2通りの操作でオン/オフ状態を切り替えることができます。
- ( void )loadView
{
[ super loadView ];
UIView * parentView = self.view;
parentView.backgroundColor = [ UIColor grayColor ];
// UISwichを生成
UISwitch * switch1 = [ [ [ UISwitch alloc ] init ] autorelease ];
// 表示位置を指定。縦横サイズは無視される(94/27で固定)
switch1.frame = CGRectMake( 40, 50, 1, 1 );
// 初期値を指定する
switch1.on = YES;
// ON/OFF切り替え時に呼びされる関数を指定する
[ switch1 addTarget:self action:@selector( onChangeSwitch: )
forControlEvents:UIControlEventValueChanged ];
// 親Viewに登録する
[ parentView addSubview:switch1 ];
m_objSwitch1 = [ switch1 retain ];
// 連動するUISwitchを作成する
UISwitch * switch2 = [ [ [ UISwitch alloc ] init ] autorelease ];
switch2.on = NO;
switch2.frame = CGRectMake( 186, 50, 1, 1 );
[ parentView addSubview:switch2 ];
m_objSwitch2 = [ switch2 retain ];
return;
}
- ( void )onChangeSwitch:( id )sender
{
NSLog( @"UISwitchの値が変更されたよ!" );
[ m_objSwitch2 setOn:!m_objSwitch1.on animated:YES ];
return;
}