正如分段控制項代替了選項按鈕,開關也代替了點選框。開關是到目前為止用起來最簡單的控制項,不過仍然可以作一定程度的定製化。
一、建立
UISwitch* mySwitch = [[ UISwitch alloc]initWithFrame:CGRectMake(200.0,10.0,0.0,0.0)];
是不是很奇怪,大小竟然是0.0×0.0,沒錯,系統會自動幫你決定最佳的尺寸,你自己寫的尺寸會被忽略掉,你只要定義好相對父視圖的位置就好了。關於純程式碼建立控制項請參看我的另一篇博文:《有關View的幾個基礎知識點》
二、顯示控制項
[ parrentView addSubview:mySwitch];//添加到父視圖
或
self.navigationItem.titleView = mySwitch;//添加到導覽列
二、開關狀態
開關狀態可以通過它的on屬性讀取,這個屬性是一個BOOL值,表示開關是否被開啟:
BOOL switchStatus = mySwitch.on;
你可以在你的代碼中用setOn方法來開啟或關閉開關:
[ mySwitch setOn:YES animated:YES];
三、通知
想要在開關狀態切換時收到通知,可以用UIControl類的addTarget方法為UIControlEventValueChanged事件添加一個動作。
[ mySwitch addTarget: self action:@selector(switchValueChanged:) forControlEvents:UIControlEventValueChanged];
這樣,只要開關一被切換目標類(上例中目標類就是當前控制器self)就會調用switchValueChanged方法,是不是很棒呢?
- (void) switchValueChanged:(id)sender{ UISwitch* control = (UISwitch*)sender; if(control == mySwitch){ BOOL on = control.on; //添加自己要處理的事情代碼 }}
瞭解了開關之後是不是覺得很棒呢?是不是發現有好多地方可以用到它?覺得不錯就馬上寫點代碼體驗一下吧!