我正在调试一个具有旧库的旧项目。我不确定他们如何从按钮操作方法调用块处理程序。他们在一个类中声明了一个方法
+ (void) method: (NSString *) parameter;
我猜他们在其中添加了“取消”按钮和该按钮的操作方法。他们已声明一个阻止为
typedef void (^simpleBlock)(void);
@property (nonatomic, copy) simpleBlock simpleBlock;
当它在ViewController类中实现时,称为
[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对象来初始化,
每当我们需要操作时,无需在类文件中编写操作代码,只需在初始化类的位置编写代码即可,例如,在cellforrow atIndexpath中
cell.LikeButtonTapAction = ^(TotalLikes_Comments *aCell){
// Do your stuff.
};
上面是IBAction中调用块的逻辑。但是在您的情况下,这是用Frameworks编写的。隐性逻辑对所有人都隐藏了。例如。
if(self.openLikesTapAction) {
self.openLikesTapAction(self);
}
希望你从中得到一个主意。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句