Delegation !
Delega&on • Objects
– Object เจ้านาย, Delega&ng Object – Object ขี้ข้า, Delegate Object
• Object เจ้านาย สั่ง delegate object ให้ทำงานต่อ • Object เจ้านาย ต้องมี delegate property เพื่อแต่งตั้ง ขี้ข้า • Object ขี้ข้าต้องเตรียมรับ คำสั่ง จาก Object เจ้านาย
– Delegate Protocol
Example: UITextFieldDelegate
ขี้ข้า MyViewController = Delegate Object
เจ้านาย myUITextField = Delega&ng Object
myUITextField
ละคร
ขี้ข้า MyViewController = Delegate Object
เจ้านาย myUITextField = Delega&ng Object
myUITextField
เจ้าจงเป็น delegate ให้ข้า (แปลเพราะๆ ว่า มึงมาเป็นขี้ข้าให้กู)
ข้าน้อย MyViewController ขอรับใช้
ดีมาก! อยากให้ทำอะไรแล้วจะบอก
ข้าน้อยจะเตรียม methods ไว้รับใช้
จงไปอ่าน Delegate Protocol วิธีการเป็นขี้ข้าที่ดี
STEPS
1. เจ้านายแต่งตั้งขี้ข้า self.myUITextField.delegate = self;//self คือ MyViewController!
2. ขี้ข้ายอมรับการเป็นทาส @interface MyViewController : UIViewController <UITextFieldDelegate>!
3. ขี้ข้าเตรียม methods ไว้รับใช้เจ้านาย -(BOOL)textFieldShouldReturn:(UITextField *)textField{…} !
Example: UITextFieldDelegate
ขี้ข้า MyViewController = Delegate Object
เจ้านาย myUITextField = Delega&ng Object
myUITextField
Example: UITextFieldDelegate
ขี้ข้า MyViewController = Delegate Object
เจ้านาย myUITextField = Delega&ng Object
1) แจ้งไปยังขี้ข้า
ว่า user กด return myUITextField
Example: UITextFieldDelegate
ขี้ข้า MyViewController = Delegate Object
เจ้านาย myUITextField = Delega&ng Object
1) แจ้งไปยังขี้ข้า
ว่า user กด return
2) ขี้ข้าเช็คว่ามี method รับการกด return
… myUITextField
Example: UITextFieldDelegate
ขี้ข้า MyViewController = Delegate Object
เจ้านาย myUITextField = Delega&ng Object
1) แจ้งไปยังขี้ข้า
ว่า user กด return
2) ขี้ข้าเช็คว่ามี method รับการกด return
… textFieldShouldReturn
A method in delegate protocol
of UITextFieldDelegate
myUITextField
Example: UITextFieldDelegate
ขี้ข้า MyViewController = Delegate Object
เจ้านาย myUITextField = Delega&ng Object
1) แจ้งไปยังขี้ข้า
ว่า user กด return
2) ขี้ข้าเช็คว่ามี method รับการกด return
… textFieldShouldReturn
A method in delegate protocol
of UITextFieldDelegate
myUITextField
UITextFieldDelegate Protocol Overview
The UITextFieldDelegate protocol defines the messages sent to a text field delegate as part of the sequence of edi&ng its text. All of the methods of this protocol are op&onal. Managing Edi9ng • – textFieldShouldBeginEdi&ng: • – textFieldDidBeginEdi&ng: • – textFieldShouldEndEdi&ng: • – textFieldDidEndEdi&ng: Edi9ng the Text Field’s Text • – textField:shouldChangeCharactersInRange:replacementString: • – textFieldShouldClear: • – textFieldShouldReturn:
Delegate Protocol
• List of methods ที่ Delegate Object – ต้องมี (required) – อาจมี (op&onal)
• เพื่อรับใช้เจ้านาย (Delega&ng Object)
Example 2 : UIAlertViewDelegate
MyViewController = Delegate Object myAlertView = Delega&ng Object
STEPS
1. เจ้านายแต่งตั้งขี้ข้า UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"AlertView Title" ! " message:@”Please click a button" ! delegate: self ! cancelButtonTitle:@"Cancel" ! otherButtonTitles:@"OK", nil];!
2. ขี้ข้ายอมรับการเป็นทาส @interface MyViewController : UIViewController <UIAlertViewDelegate>!
3. ขี้ข้าเตรียม methods ไว้รับใช้เจ้านาย -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{…} !
Example 2 : UIAlertViewDelegate
MyViewController = Delegate Object myAlertView = Delega&ng Object
Example 2 : UIAlertViewDelegate
MyViewController = Delegate Object myAlertView = Delega&ng Object
1) แจ้งไปยัง delegate
ว่า user กดปุ่มไหน
Example 2 : UIAlertViewDelegate
MyViewController = Delegate Object myAlertView = Delega&ng Object
1) แจ้งไปยัง delegate
ว่า user กดปุ่มไหน
2) Delegate เช็คว่ามี method รับการกดปุ่ม
…
Example 2 : UIAlertViewDelegate
MyViewController = Delegate Object myAlertView = Delega&ng Object
2) Delegate เช็คว่ามี method รับการกดปุ่ม
… alertView:clickedButonAtIndex:
1) แจ้งไปยัง delegate
ว่า user กดปุ่มไหน
Example 2 : UIAlertViewDelegate
MyViewController = Delegate Object myAlertView = Delega&ng Object
3) MyViewController ทำงานตามแต่เราจะโค้ด เช่น NSLog();
2) Delegate เช็คว่ามี method รับการกดปุ่ม
… alertView:clickedButonAtIndex:
1) แจ้งไปยัง delegate
ว่า user กดปุ่มไหน
UIAlertViewDelegate Protocol Overview
The UIAlertViewDelegate protocol defines the methods a delegate of a UIAlertView object should implement. The delegate implements the buZon ac&ons and any other custom behavior. Some of the methods defined in this protocol are op&onal. Responding to Ac9ons • – alertView:clickedBuZonAtIndex: Customizing Behavior • – alertViewShouldEnableFirstOtherBuZon: • – willPresentAlertView: • – didPresentAlertView: • – alertView:willDismissWithBuZonIndex: • – alertView:didDismissWithBuZonIndex: Canceling • – alertViewCancel: