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)

2014/03/24

[iOS] 命令別人做事 - target & action


idea...





我是Button按鈕,我有許多行為,
又可以與使用者互動,比如說使用者可以按下我等等的,
但...我只知道我被按下了,
按下後我又不能做什麼事,
有誰可以幫我做事呢?
我是Controller,
我可以程式的方式敘述做事的內容,
甚至以一個方法將要做的事裝起來,
你可以命令我做事吧。

好,那我就命令Controller你做事,
你就是我命令做事的對象 - target,
同時幫我做事 - action。




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


第2步:在ViewController中,產生一個Button按鈕的插座,並取名為button




第3步:於"ViewController.m"中,加入變改Button按鈕字樣成"OK"的方法,這個方法就是等會Button按鈕被按下後要做的事,其中的一個參數sender即是會帶入Button按鈕本身:

-(void)sayHello:(id)sender{ [sender setTitle:@"Hello" forState:UIControlStateNormal]; }

第4步:於"ViewController.m"中,於viewDidLoad方法中,直接使用target-action的技巧,讓Button按鈕命令Controller做事
  • 第1個參數target即是代入controller物件(在此以self表示,因viewDidLoad方法是在controller中,因此使用self即可取得)
  • 第2個參數action,以@selector的方式,描述要傳送給controller的訊息為"sayHello:"
  • 第3個參數則指出當Button按鈕被按下時,則會開始叫controller作事,也就是傳送"sayHello:"訊息給controller

- (void)viewDidLoad { [super viewDidLoad]; [self.button addTarget:self action:@selector(sayHello:) forControlEvents:UIControlEventTouchUpInside]; }

第5步:執行後對Button按鈕,這時您會發現,Button按鈕被按下時,則會叫Controller,將自已按鈕上的字樣改成"Hello"




檔案連結:Target_Action.zip


Target一定要是Controller嗎?
只要是任何的物件皆可以成為target-action的對象,比如你可以自訂一個類別,而這個類別的物件也可以成為target,以進行後續的action