iOS中自定義delegate的實現
在iOS開發中經常會用到delegate,無論是檢視、控制元件,還是不同頁面之間傳值等等。
通常,我們需要自定義delegate實現,以下簡單介紹自定義delegate的步驟。
1.定義delegate的protocol檔案
假如SettingsViewController類需要委託MainViewController類實現自身協議方法。
首先,在標頭檔案SettingsViewController.h檔案中新增如下內容:
// 宣告協議名稱和方法
@protocol buttonDelegate@required
-(void)settingsButtonTapped;
-(void)bookmarksButtonTapped;@optional
-(void)doubleClick;
-(void)fastForward;@end
// delegate屬性
@property (assign, nonatomic)id<buttonDelegate>delegate;
@end
@protocl 後的MainViewDelegate則為自定義delegate名,受委託類需要引用該名字
然後在觸發的地方新增:
[delegate settingsButtonTapped];
[delegate bookmarksButtonTapped];
2.在受委託類的標頭檔案MainViewController.h中定義
#import "SettingsViewController.h"
@interface MainViewController : UIViewController
{
MainView *_contentView;SettingsViewController *_settingsViewController;
}
在類定義中使用“<>”符號作為deleate的名字。
3.最後在類的實現檔案MainViewController.m中定義該delegate中必須定義的函式內容:
@implementation
- (void)viewDidLoad
{
_settingsViewController.delegate = self; // 設置委託物件,SettingsViewController委託MainViewController
}
// 實現委託方法
- (void)settingsButtonTapped
{
......
}
- (void)bookmarksButtonTapped
{
......
}
好了,自定義delegate就完成了.