IOS之基本UI控制項

來源:互聯網
上載者:User

3.1 Button控制項

3.2 開關控制項

3.3 滑塊控制項

3.4 工具列

3.5 WebView

 

3.1 Button控制項

iPhone的Button控制項可以做的很絢麗,Button可以有多種狀態:

" Default State 

" Highlighted State 

" Selected State 

" Disabled State 

實現的效果:建立ButtonsBackground項目:

ButtonsBackgroundViewController.h檔案

@interface ButtonsBackgroundViewController : UIViewController {    UIButton * clearButton;    UIButton * smallButton;}@property (nonatomic, retain) IBOutlet UIButton * clearButton;@property (nonatomic, retain) IBOutlet UIButton * smallButton;- (IBAction) disableBut: (id) sender;@end

 

ButtonsBackgroundViewController.m檔案

@synthesize clearButton;@synthesize smallButton;- (IBAction) disableBut: (id) sender {    if(clearButton.enabled == YES) {        clearButton.enabled = NO;        smallButton.enabled = NO;        [((UIButton *) sender) setTitle:@"Enable" forState:UIControlStateNormal];    }    else {        clearButton.enabled = YES;        smallButton.enabled = YES;        [((UIButton *) sender) setTitle:@"Disable" forState:UIControlStateNormal];    }}- (void)dealloc {    [clearButton release];    [smallButton release];    [super dealloc];}

點擊Disable按鈕時候,調用disableBut方法,在該方法中實現了clearButton按鈕和smallButton按鈕“可用”狀態和“不可用”狀態的切換。在狀態發生切換時候還要改變Disable按鈕的上面的“標題”和“狀態”:

[((UIButton *) sender) setTitle:@"Enable"forState:UIControlStateNormal];

sender是事件來源即點擊的按鈕對象本身。

Interface Builder設計頁面 :

點擊Disable按鈕的時候,會改變clearButton和smallButton的標題,因此需要串連File’s Owner到兩個按鈕(clearButton和smallButton)的輸出口。

為了響應Disable按鈕的事件需要,從Disable按鈕串連到File’s Owner定義的disableBut事件。

clearButton屬性設定

屬性框,使Shows Touch on Highlight is checked 選項被選中。

Default State Configuration選中時候,設定按鈕圖片power.png背景圖片butbackgray.png。

Highlighted State Configuration 選中時候,設定按鈕圖片power.png ,背景圖butbackbluegray.png。

Disabled State Configuration 選中時候,設定按鈕圖片powerdisabled.png背景圖片,butbackgraydisabled.png。

smallButton屬性設定

Default State Configuration選中時候,設定按鈕圖片butbackgray.png背景圖片, 設定title“Shock”。

Highlighted State Configuration 選中時候,設定圖片butbackbluegray.png背景圖片,設定title“Shocking”。

3.2 開關控制項

開關控制項(Switch),有些相windows中的checkbox,它只有兩種狀態,true和false。

可以通過該方法改變開關控制項的狀態。

-(void) setOn: (BOOL) on animated: (BOOL) animated

3.3 滑塊控制項

滑塊控制項(Slider),水平放置,可以用手觸摸改變它的值。

預設情況下它的最小值0最大值1.00,而.50是初始值,我們可以通過下面的方法設定值:

- (void) setValue:(float) value animated:(BOOL) animated

開關和滑塊執行個體

我們通過在頁面放在開關和滑塊控制項瞭解他們的使用方式。

建立項目SwitchSlider:

SwitchSliderViewController.h

@interface SwitchSliderViewController : UIViewController {     UISwitch * mySwitch;}@property(nonatomic, retain)IBOutlet UISwitch * mySwitch;-(IBAction) handleSwitch: (id) sender; -(IBAction) handleSlider: (id) sender;@end

SwitchSliderViewController.m

@implementation SwitchSliderViewController@synthesize mySwitch;- (IBAction) handleSwitch: (id) sender {    if( [((UISwitch *) sender) isOn] == YES){        NSLog(@"It's on");    } else {        NSLog(@"It's off");    }} - (IBAction) handleSlider: (id) sender {    NSLog(@"value: %f", ((UISlider *)sender).value);    if( [((UISlider *) sender) value] == ((UISlider *) sender) .maximumValue) {        [mySwitch setOn:YES animated:YES];    }}- (void)dealloc {    [mySwitch release];     [super dealloc];} 

串連輸出口和動作事件

串連開關控制項到的handleSwitch: 動作。

串連滑塊控制項到的handleSlider: 動作。

制定開關控制項輸出口。

3.4 分段控制項

分段控制項(Segment),是有2個或更多段構成的組,它相當與獨立的按鈕。

建立項目Segment:

SegmentViewController.h

定義一個動作事件

@interface SegmentViewController : UIViewController {}- (IBAction) handleSegment: (id) sender;

SegmentViewController.m

- (IBAction) handleSegment: (id) sender {    UISegmentedControl * myseg = (UISegmentedControl *) sender;    if(myseg.selectedSegmentIndex == 0) {        NSLog(@"selected zero index...");    }    else if(myseg.selectedSegmentIndex == 1) {        NSLog(@"selected one index...");    }    else {        NSLog(@"selected two index...");    }}

IB設計檢視

串連動作事件

串連段控制項到File’s Owner的handleSegment: 動作。

3.4 工具列

工具列(UIToolBar),一般是放置在螢幕的底部,在工具列的內部可以放置多個按鈕和控制項。

建立項目ToolBar:

ToolBarViewController.h

定義兩個動作事件

@interface ToolBarViewController : UIViewController {    IBOutlet UIActivityIndicatorView * myActivityView;}@property (nonatomic, retain) IBOutlet UIActivityIndicatorView * myActivityView;-(IBAction)onClickStartButton: (id)sender;-(IBAction)onClickOpenButton: (id)sender;@end

ToolBarViewController.m

@implementation ToolBarViewController@synthesize myActivityView;-(IBAction)onClickStartButton: (id)sender {    if ([myActivityView isAnimating]) {        [myActivityView stopAnimating];                } else {        [myActivityView startAnimating];    }}-(IBAction)onClickOpenButton: (id)sender {    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示資訊"                                     message:@"您點擊了開啟按鈕" delegate:self                                     cancelButtonTitle:@"Done"                                     otherButtonTitles:nil];    [alert show];    [alert release];}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];}- (void)viewDidUnload {}- (void)dealloc {    [myActivityView release];    [super dealloc];}@end

 

IB設計檢視

串連動作事件

串連到開啟按鈕的onClickOpenButton: 動作。

串連到開始按鈕的onClickStartButton: 動作。

串連到UIActivityIndicatorView輸出口。

3.5 WebView

WebView可以協助我們構建Web的iPhone應用程式。 很多網站的iPhone和iPad用戶端程式都是使用WebView開

發的。 WebView能夠支援HTML5,不支援Flash等。

建立項目MyWeb:

MyWebViewController.h

@interface MyWebViewController : UIViewController <UIWebViewDelegate> {    IBOutlet UITextField * myTextField;    IBOutlet UIWebView * myWebView;}@property(nonatomic, retain) UIWebView * myWebView;@property(nonatomic, retain) UITextField * myTextField;- (IBAction) changeLocation: (id) sender;@end

MyWebViewController 需要實現協議UIWebViewDelegate,它一個委派物件。委託是一種設計模式,在iPhone中主要用於回調事件。在委託中定義了一下方法,實現了該委託的對象,要提供該方法的實現。

UIWebViewDelegate的方法是webViewDidFinishLoad:  它上在非同步情況一個網址,當應答回來後回調該方法。

MyWebViewController.m

@implementation MyWebViewController@synthesize myWebView;@synthesize myTextField;- (void) viewDidLoad {    myWebView.delegate = self;}- (void)dealloc {    myWebView.delegate = nil;    [myTextField release];    [myWebView release];    [super dealloc];}- (IBAction) changeLocation: (id) sender {    [myTextField resignFirstResponder];    NSURL * url = [NSURL URLWithString: myTextField.text];    NSURLRequest * request = [NSURLRequest requestWithURL:url];    [myWebView loadRequest:request];}#pragma mark WebView 委託#pragma mark --- (void)webViewDidFinishLoad: (UIWebView *) webView {    NSLog(@"%@", [webView stringByEvaluatingJavaScriptFromString:                  @"document.body.innerHTML"]);}@end

在viewDidLoad 方法中的myWebView.delegate =self是指定為自身。

webViewDidFinishLoad方法中實現委託回調功能。

[myWebView stringByEvaluatingJavaScriptFromString:     

@"document.documentElement.textContent”]

是運行一個JavaScript指令碼程式,document.body.innerHTML獲得頁面中的HTML代碼。

註:

1 本教程是基於關東升老師的教程

2 基於黑蘋果10.6.8和xcode4.2

3 本人初學,有什麼不對的望指教

4 教程會隨著本人學習,持續更新

5 教程是本人從word筆記中拷貝出來了,所以格式請見諒

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.