2016-12-13 18 views
0

古いライブラリを持っている古いプロジェクトをデバッグしています。ボタンアクションメソッドからブロックハンドラをどのように呼び出したかわかりません。彼らはメソッドを宣言しているクラスを持っていますIBActionメソッドで呼び出された補完ハンドラ

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

ボタンのキャンセルボタンとアクションメソッドが追加されています。彼らは

typedef void (^simpleBlock)(void); 

@property (nonatomic, copy) simpleBlock simpleBlock; 

そしてそれはのViewControllerクラスに実装されたときにそれが

私ができなかったので、彼らはボタンアクションとメソッドとブロックをリンクしているだろうどのように
[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コードを書く必要がちょうどあなたが

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

以上atIndexpathクラスeg.in cellforrowを初期化している、あなたのコードを書いていないアクションがIBActionでの起動をブロックするためのロジックである。したいときはいつでも あなたのシナリオでは、これはFrameworksで書かれています。 Ibaction Logicはすべてから隠されています。例えば。

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

あなたはこれからアイデアを得ることを願っています。

関連する問題