Iphone開發(三)按鈕的響應控制

來源:互聯網
上載者:User

上次我們介紹了helloWorld的實現原理,其中大部分代碼都是項目模板自動產生的,今天我們來在研究一下如何在Iphone應用中添加按鈕和按鈕的監聽,首先建立一個項目:

  

 

然後在自動產生的檔案中開啟xib檔案並進行如下操作,拖一個label,兩個button,並將內容分別發為:

  


 

現在我們就要用到一個新概念了,那就是輸出口和行為,輸出口的關鍵字是IBOutlet,這隻是一個單純的關鍵字,但是在xcode開發中,使用該關鍵字聲明的變數可以和xib檔案中畫出來的控制項相聯絡,有點兒類似於android開發中的findViewById,行為的關鍵字是:IBAction.該關鍵字用來修飾方法,使用該關鍵字修飾的方法可以和xib檔案中的控制項的各種事件綁定,使用IBAction修飾的自訂方法會有一個參數sender,可以用來傳遞xib中控制項的一些屬性,比如標題或者什麼的。好了,看代碼,我們先在viewController.h中用IBOutlet聲明一下label和兩個button,以及用IBAction修飾的回應程式法。

viewController.h:

  

 

左邊的小圓圈表示可以和xib檔案中的控制項相連,但是是空心的,說明還未串連。下面我們在viewController.m中將其實現:

viewCotroller.m:


[plain] #import "ViewController.h" 
 
@interface ViewController () 
 
@end 
 
@implementation ViewController 
@synthesize label; 
@synthesize bu1; 
@synthesize bu2; 
-(IBAction)click:(id)sender 

    label.text=[sender titleForState:UIControlStateNormal];//1 

- (void)viewDidLoad 

    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

 
- (void)viewDidUnload 

    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 

 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 

    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 

 
@end 
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize label;
@synthesize bu1;
@synthesize bu2;
-(IBAction)click:(id)sender
{
    label.text=[sender titleForState:UIControlStateNormal];//1
}
- (void)viewDidLoad
{
    [super viewDidLoad];
 // Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

@end代碼1中的sender是指觸發該方法的控制項,titleForState是取出該控制項的title,在正常狀態下,因為button等控制項是有正常狀態,按下狀態等區別的。取出title後將其賦給label,這樣就可以實現點擊不同的button來改變label的內容了。

另外,xib檔案和viewController類的執行個體是通過interfaceBuilder來串連的,interfaceBuilder構建的xib檔案中會有一個File's Owner,其實就是指的viewController類的執行個體,通過viewController執行個體來控制項資料和視圖。好了,下面需要把view和viewController聯絡起來了,方法非常簡單:

第一步,先將xib檔案代表的view和File's Owner代表的viewController聯絡起來,只需要在xib介面按下Control鍵,單擊File's Owner並拖拽到View視圖上即可。

  

 

第二步,將view中的三個控制項與viewController中的三個輸出口聲明的變數相串連,如所示,在xib中選中一個控制項時,在右上方一個向右箭頭的表徵圖表示:connection insector(串連檢查)會出現一個new referencing outlet,這時點擊右邊的小圓圈往File's  Owner上面拖拽,拖到File's Owner上後會找到在viewController中定義的控制項名,選擇即可。bu1,bu2同理。

  


 

這樣三個控制項就和viewController中的控制項相綁定了,我就是你你就是我,就可以進行操作了,但是現在我們綁定的只是控制項而已,button的click方法我們還沒有和button綁定,這時我們需要這樣來:點擊bu1後我們會在右邊發現一欄如叫sent Events,代表該button的一些事件,裡面有一個touch up inside,表示手指離開螢幕時,最後接觸位置在該button上,也就是點擊方法了,這時我們點擊右邊的小圓圈拖到File's Owner上,在出現的列表中選擇我們定義好的click方法即可。bu2同理。

  

 

這時我們就將所有的控制項和回應程式法從xib檔案對應到了viewController對象,我們在點擊不同的button時,會根據sender找到button的title將其內容賦給label。好了,一起見證奇蹟吧:

  

 

是不是很簡單啊,基實還是表現了MVC的模式,controller串連view和model,而視圖和資料老死不相往來。

 

摘自  holydancer的專欄
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.