在 IBAction 方法中调用的 Completion Handler

Completion Handler called in IBAction Method

我正在调试一个有旧库的旧项目。我不确定他们是如何从按钮操作方法中调用块处理程序的。他们有一个 Class ,他们在其中声明了一个方法

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

我猜,他们正在为该按钮添加取消按钮和操作方法。他们已将区块声明为

typedef void (^simpleBlock)(void);

@property (nonatomic, copy) simpleBlock simpleBlock;

当它在 ViewController class 中实现时,它被称为

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

他们如何将块与按钮操作和方法联系起来,因为我看不到它是库,只有头文件。对理解此实现的任何帮助将不胜感激。谢谢!

为了在我们这样编码的任何动作上调用一个块,

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);
    }
}

只要单击按钮,此块就会使用 class 的对象进行初始化,

每当我们需要动作时,无需在 class 文件中编写动作代码,只需在初始化 class eg.in cellforrow atIndexpath

的地方编写代码即可
cell.LikeButtonTapAction = ^(TotalLikes_Comments *aCell){
  // Do your stuff.
};

以上是在IBAction中调用Block的逻辑。 但是在您的场景中,这是用框架编写的。其中 Ibaction 逻辑对所有人都是隐藏的。例如

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

希望你从中得到启发。