2016-12-13 73 views
0

我正在調試有一箇舊庫的舊項目。我不知道他們如何從按鈕操作方法調用塊處理程序。他們有他們在那裏聲明的方法完成處理程序在IBAction方法中調用

+ (void) method: (NSString *) parameter; 

在我的猜測,他們將取消按鈕和操作方法的按鈕類。他們宣佈塊作爲

typedef void (^simpleBlock)(void); 

@property (nonatomic, copy) simpleBlock simpleBlock; 

而當它在視圖控制器類中實現它被稱爲

[ClassName method:@"parameter"].simpleBlock = ^{ 
     //Do something 
    }; 

他們怎麼會掛與按鈕動作塊和方法,因爲我不能因爲它是庫,只有頭文件。理解這個實現的任何幫助將不勝感激。謝謝!

回答

1

有關任何這樣的行動,我們代碼調用的塊,

TotalLikes_Comments.h

@property (nonatomic, copy) void (^LikeButtonTapAction)(TotalLikes_Comments *aCell); 

- (IBAction)openLikesClick:(id)sender; 

TotalLikes_Comments.m方法的實際實施是

- (IBAction)openLikesClick:(id)sender { 
    if (self.openLikesTapAction) { 
     self.openLikesTapAction(self); 
    } 
} 

凡每當按鈕點擊此塊初始化爲類的對象,

每當我們想要的動作沒有必要寫在類文件theaction代碼只寫你的代碼,你必須初始化類eg.in cellforrow atIndexpath

cell.LikeButtonTapAction = ^(TotalLikes_Comments *aCell){ 
    // Do your stuff. 
}; 

以上是用於調用區塊IBAction爲邏輯。 但在你的情況下,這是寫在框架。 Ibaction邏輯隱藏於其中。例如。

if(self.openLikesTapAction) { 
    self.openLikesTapAction(self); 
    } 

希望你有一個想法。