美文网首页iOS高质量博客iOSiOS OC 学习手册
iOS之用Block实现cell上的按钮点击事件

iOS之用Block实现cell上的按钮点击事件

作者: APP叫我取个帅气的昵称 | 来源:发表于2017-04-20 13:54 被阅读1843次

写这篇文章纯属打发时间用......

需求:cell的按钮点击事件的实现,如图
cell上的添加到购物车按钮.png

在cell.h文件中 先定义一个block

#import <UIKit/UIKit.h>

@class XSMyFavoriteTableViewCell;

//声明一个名为 AddToCartsBlock  无返回值,参数为XSMyFavoriteTableViewCell 类型的block
typedef void (^AddToCartsBlock) (XSMyFavoriteTableViewCell *);

@interface XSMyFavoriteTableViewCell : UITableViewCell

@property(nonatomic, copy) AddToCartsBlock addToCartsBlock;

@end

在cell.m的文件中

- (IBAction)addToShoppingCart:(UIButton *)sender {
    if (self.addToCartsBlock) {
        self.addToCartsBlock(self);
    }
}

在controller中,

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    XSMyFavoriteTableViewCell *cell = (XSMyFavoriteTableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellID forIndexPath:indexPath];
    __weak typeof(self) weakSelf = self;
    cell.addToCartsBlock = ^(XSMyFavoriteTableViewCell *cell) {
        [weakSelf myFavoriteCellAddToShoppingCart:cell];
    };
    return cell;
}
- (void)myFavoriteCellAddToShoppingCart:(XSMyFavoriteTableViewCell *)cell{
        NSLog(@"点击了添加到购物车");
}

同理,这个需求用代理也同样能实现,具体看个人喜好咯。
而本人的另一篇文章iOS将数据从controller里分离出来减轻controller的压力也正是利用了block传值而得以实现的。
以上。

相关文章

网友评论

本文标题:iOS之用Block实现cell上的按钮点击事件

本文链接:https://www.haomeiwen.com/subject/feakzttx.html