en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

8.29.2011

關於 UISegmentedControl 的基本設定方式

 

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]]);
}








沒有留言:

張貼留言