標籤:
delegate 也是用來解耦的, 他不再是簡簡單單讓目標去執行一個動作了,而是讓delegate去處理一些事件.
這跟在OC中學習的協議是一樣的, 分為6步.
還是建立一個繼承於UIView 的 MyButton類.
MyButton.h代碼如下:
#import <UIKit/UIKit.h>// 1.聲明一份協議@protocol MyButtonDelegate <NSObject>// 協議內容,即代理人需要做的事情:改顏色.- (void)changeColor;@end@interface Mybutton : UIView//2.設定代理人屬性@property (nonatomic,assign)id<MyButtonDelegate>delegate;@end
MyButton.m代碼如下:
#import "Mybutton.h"@implementation Mybutton- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ //3.設定代理人執行的方法. [self.delegate changeColor];}@end
根視圖.m檔案中代碼:
#import "MainViewController.h"#import "Mybutton.h"// 4. 引標頭檔,簽協議@interface MainViewController ()<MyButtonDelegate>@end@implementation MainViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. Mybutton *mybutton = [[Mybutton alloc] initWithFrame:CGRectMake(270, 450, 50, 50)]; mybutton.backgroundColor = [UIColor orangeColor]; [self.view addSubview:mybutton]; [mybutton release]; //5.設定代理人 mybutton.delegate = self;} // 6.實現協議中的方法.- (void)changeColor{ self.view.backgroundColor = [UIColor colorWithRed:arc4random() % 256 / 255.0 green:arc4random() % 256 / 255.0 blue:arc4random() % 256 / 255.0 alpha:0.8];}
效果如顯示:
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
UI 04 代理設計模式