fb_license

技術標籤

@selector (1) 初使化區塊 (1) 物件 (1) 物件導向 (2) 型別 (4) 封裝 (1) 流程控制 (1) 陣列 (3) 推論型別 (2) 實機測試 (1) 蓋索林(gasolin) (1) 模組 (1) 憑證 (1) 轉型 (1) 羅康鴻 (121) 類別 (1) 變數 (5) Accelerometer (1) ActiveRecord (1) Activity (1) AFNetworking (1) alloc (1) Android (3) Animation (1) App (1) App ID (1) APP上傳 (1) ASP.NET (1) AVAudioPlayer (1) block (1) C# (2) class (1) CLLocationManager (1) CLLocationManagerDelegate (1) CMMotionManager (4) Controller (1) delegate (1) DELETE語法 (1) Device Motion資料 (1) Dialog (1) DropDownList (1) dynamic language (2) Facebook SDK (9) FBRequest (5) FBRequestConnection (2) FMDB (1) Gesture Recognizers (6) GROUP BY (2) Gyro (1) HAVING (1) IBAction (1) IBOutlet (1) id (3) inheritance (1) init (1) Insert (1) instance variable (1) Interface Builder (1) iOS (70) iOS idea (7) iOS Introduction (1) Layout (1) Magnetometer (1) Menu (2) Method (2) MKMapView (1) MKPointAnnotation (1) MS SQL (5) Nil (1) NSArray (1) NSDictionary (1) NSError (1) NSFileManager & .plist (1) NSMutableArray (1) NSMutableDictionary (1) NSNotificationCenter (1) NULL (1) object (2) Objective-C (16) Objective-C idea (1) ORDER BY (1) Parameter (1) property (1) protocol (2) Provisioning (1) Proximate Sensor (1) Q and A (2) R類別 (1) Rails (9) RESTful SOA (9) Ruby (8) Scene (1) SEELECT (1) Segue (2) SEL (1) SELECT語法 (1) Shake (1) Simulator (1) SOA (8) SQL (6) SQL Server (5) SQL函數 (1) SQL彙總函數 SQL (1) SQLite (1) Storyboard (1) Style (1) Swift (1) Table (1) target & action (1) Theme (1) Toast (1) TRUNCATE TABLE語法 (1) UIActionSheet (1) UIActionSheetDelegate (1) UIActivityIndicatorView (1) UIAlertView (1) UIBarButtonItem (1) UIButton (1) UICollectionView (1) UICollectionViewDataSource (1) UIControl (9) UIDatePicker (1) UIImage (1) UIImagePickerController (2) UIImagePickerControllerDelegate (2) UIImageView (1) UILabel (1) UILongPressGestureRecognizer (1) UINavigationController (2) UIPanGestureRecognizer (1) UIPinchGestureRecognizer (1) UIProgressView (1) UIResponder (1) UIRotationGestureRecognizer (1) UISegmentedControl (1) UISlider (1) UIStepper (1) UISwipeGestureRecognizer (1) UISwitch (1) UITabBarController (1) UITableView (1) UITableViewDataSource (1) UITapGestureRecognizer (1) UITextField (1) UITextFieldDelegate (1) UITextView (2) UITextViewDelegate (1) UIToolBar (1) UIView (8) UIWebView (1) UPDATE語法 (1) var (2) VB.NET (7) View (4) WHERE子句 (1) XML (1)

2013/05/28

[iOS] IBAction標記 - 在Controller標記出View元件的動作

idea...





我是Button按鈕,我有許多行為,
又可以與使用者互動,比如說使用者可以按下我等等的。
我是iOS工程師,
Button按鈕啊,我要知道你什麼時候被按下,
 好執行我要為使用者執行的程式。

iOS工程師,我是Controller,
我又聽到您的需求了,同樣的問題,
Interface Builder以xml的方式保存了Button按鈕,
但我並不知道您要關注Button按鈕的的哪個行為?
因此你必須在我這個Controller上產生一個動作 - IBAction,
讓我Controller與Interface Builder知道,
Button按鈕的某些行為必須對應Controller的哪個方法,
而後即可將你要為使用者的事寫在對應的方法中,
即可為使用者執行想要的程式了!
比如按鈕按下時,讓背景變顏色等等的。




第1步:建立一個名為"IBAction"的"Single View Application"專案,並加入一個Button按鈕(Round Rect Button)至畫面中。



第2步:連結Button按鈕的"Touch In Side"事件

  • 2.1 對Button按鈕按右鍵打開選單。


  • 2.2 找到代表按鈕被按下的"Touch In Side"事件,並拖拉右方圓點至ViewController類別的定義中(.h)。 


  • 2.3 於"Name"欄位中屬性touch,並按下"Connect"。



  • 2.4 此時會產生一個名為"touch"方法,其中回傳值型別變成特殊的標記"IBAction",其沒有任何作用,只用以表示此方法可與Interface Builder連結,當然左邊的內含小圓點的圓點,即表示已跟Interface Builder(寫到xml檔中)連結在一起了。




第3步:打開"ViewController.m"檔案,並找到touch:方法,於其中加入變更底層View背景為藍色,與變更Button按鈕字樣為"OK"的程式。

- (IBAction)touch:(id)sender {
    [self.view setBackgroundColor:[UIColor blueColor]];
    
    [((UIButton*)sender) setTitle:@"OK"
                                   forState:UIControlStateNormal];
}



第4步:執行後對Button按鈕,這時您會發現,Button按鈕真的呼叫touch方法,並將底層View的顏色變更為藍色,而Button按鈕的文字也變更為"OK"。




檔案連結:IBAction.zip



運作原理:IBAction同IBOutlet一樣,皆是讓Interface Builder與Controller作連結,IBAction是連結事件,而IBOutlet則連結物件(如View元件等)。對同一個物件(如View元件),IBAction與IBOutlet並不需要同時使用,就看您的需求而定,看你是要連結事件還是物件,但兩者並沒有強制要同時連結。