Segmented Controller

Segmented Controller最典型的應用就是在行事曆的日、月、週切換,呈現的資料會根據日月週來分別呈現,下面使用Segmented Controller來切換網頁呈現網站內容。

以下使用3個Segments來做Google、Yahoo、Youtube的切換。

**Step 1.**建立SingleView專案,專案命名為Segmented Contrller

**Step 2.**編輯MainStoryboard.storyboard。

該專案會使用到的元件有:

  1. Toolbar
  2. Web View
  3. TextField
  4. Segmented Controller
  5. Activity Indicator View

Activity Indicator View的設定如同之前Web View一樣。

Segmented Controlle在預設中只有兩個選項,要增加選項可在Attributes inspectorSegments設定成你要的數量,接著在下方Segment可以設定Segment 0Title,根據你選擇到第幾個Segment可以個別去設定Title

**Step 3.**編輯ViewController.h。

定義的變數如同Web View內的,這裡多一個UISegmentedControlhitSegmentedSegmented Controller的觸發事件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@interface ViewController : UIViewController<UIWebViewDelegate>
{
UIWebView *webView_;
UITextField *urlTextField_;
UIActivityIndicatorView *activityView_;

UISegmentedControl *segmented_;
}

@property (strong, nonatomic) IBOutlet UIWebView *webView;
@property (strong, nonatomic) IBOutlet UITextField *urlTextField;
@property (strong, nonatomic) IBOutlet UIActivityIndicatorView *activityView;

@property (strong, nonatomic) IBOutlet UISegmentedControl *segmented;

-(IBAction)hitReturn:(id)sender; //點選鍵盤的return的觸發事件

-(IBAction)hitSegmented:(id)sender;//點選Segmented Controller的事件

**Step 4.**編輯ViewController.m。

載入網頁的過程也如同Web View的說明,因此在viewDidLoadhitReturn方法都與Web View相同;UIActivityIndicatorView的操作也一樣僅需將Web View中的webViewDidStartLoadwebViewDidFinishLoad複製過來即可。

這裡則是多了一個hitSegmented的方法,載入網頁的過程都是使用相同的方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
-(IBAction)hitSegmented:(id)sender
{
NSString *urlString; //網頁字串

NSInteger segmentedNum; //Segmented的選項

segmentedNum = segmented_.selectedSegmentIndex; //取得點選的Segmented Index

switch (segmentedNum) {
case 0:
urlString = @"http://www.google.com";
break;
case 1:
urlString = @"http://www.yahoo.com.tw";
break;
case 2:
urlString = @"http://www.youtube.com.tw";
break;
default:
break;
}
self.urlTextField.text = urlString;
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:urlRequest];
}

**Step 5.**建立關連。