iOS代理模式(delegate)的使用


前言:

代理模式是iOS中非常重要的一個模式,iOS SDK中的系統控件幾乎都用到了代理模式。代理模式用來處理事件監聽、參數傳遞功能。

 

協議創建(Protocol):

可手打如下代碼,或者在代碼塊里面搜索"protocol",然后把協議的代碼拖拽出來

@protocol FullcellDalegate <NSObject>

 

@required//遵守協議必須實現的方法

-(void)fullcellSelect:(NSIndexPath *)index WithBtnType:(NSInteger)type;

 

@optional //遵守協議 實現不實現方法都可以

 

 

@end

 

在協議當中,方法的聲明,被@required修飾,那么就准守這個協議的類,必須實現這個方法,否則就會發出警告。

被@optional修飾,那么准守這個協議的類,可以實現這個方法,也可以不實現這個方法,不實現編譯器也不會報警告。

 

初始化:

@property (nonatomic, weak) id<FullcellDalegate>delegate;

 

代理的初始化要用”weak“修飾,否則會警告

 

 

代理事件的監聽:

 

if ([self.delegate respondsToSelector:@selector(fullcellSelect:WithBtnType:)]) {

        [self.delegate fullcellSelect:self.indexpath WithBtnType:btn.tag];

    }

 

方法使用的時候要先判斷方法是否實現,然后才能使用。若方法沒有實現就使用該方法,會崩潰。

 

 

遵守協議:

 

@interface MainVideoController ()<UITableViewDelegate, UITableViewDataSource, ZFPlayerDelegate, FullcellDalegate>

cell.delegate = self;

 

方法實現:

 

-(void)fullcellSelect:(NSIndexPath *)index WithBtnType:(NSInteger)type

{

 

}

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM