UISegmentedControl 可以製作出多選項的按鈕物件,有點類似 Radio Button 的感覺,使用者在同一組選項中,一次只能選擇一個項目,每一個項目的背後都會有一個對應值,它們可以是該項目的 Title 、Index 或是自行設定的 Array 參數,下面程式碼將示範如何建立一個 UISegmentedControl 並設定其中的選項,其程式碼如下。
首先,一個簡單的方式,我們在 Interface Builder 中,拖曳拉出一個 UISegmentedControl,並在 Attributes Inspector 中將選項所要的分割數目與和每一個項目的 Title 設定完成,在事件的連結上,將 Value Changed 事件與下列函式連結。
- (IBAction)segmentedControlIndexChanged:(id)sender {
//利用獲得的選項Index來判斷所選項目
switch ([sender selectedSegmentIndex]) {
case 0:
NSLog(@"我是 A");
break;
case 1:
NSLog(@"我是 B");
break;
case 2:
NSLog(@"我是 C");
break;
case 3:
NSLog(@"我是 D");
break;
default:
NSLog(@"Something Error");
break;
}
}
在上述程式碼中,我們利用所獲得項目的 Index 來判斷使用者所點選的項目,在此必須注意的是,第一個項目的 Index 為 0,並在 Switch Case 中的最後補上 Default 以防萬一。
另一種方法,使用陣列的方式來產生 UISegmentedControl 並設定對應的觸發事件,程式瑪如下。
//建立陣列並設定其內容來當作選項
NSArray *itemArray =[NSArray arrayWithObjects:@"選項 A", @"選項 B", @"選項 C", nil];
//使用陣列來建立UISegmentedControl
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:itemArray];
//設定外觀大小與初始選項
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
segmentedControl.frame = CGRectMake(20.0, 300.0, 280.0, 44.0);
segmentedControl.selectedSegmentIndex = 0;
//設定所觸發的事件條件與對應事件
[segmentedControl addTarget:self action:@selector(chooseOne:) forControlEvents:UIControlEventValueChanged];
//加入畫面中並釋放記憶體
[self.view addSubview:segmentedControl];
[segmentedControl release];
最後如果對應的選項內的 Title 就是我們所要的值,我們也可以利用類似下列函式的作法,將所獲得項目的 Index 代入 UISegmentedControl 中取得對應的 Title。
- (void)chooseOne:(id)sender {
NSLog(@"%@", [sender titleForSegmentAtIndex:[sender selectedSegmentIndex]]);
}
沒有留言:
張貼留言