iOS高质量博客iOSiOS OC 学习手册

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

2017-04-20  本文已影响1843人  APP叫我取个帅气的昵称

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

需求: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传值而得以实现的。
以上。

上一篇 下一篇

猜你喜欢

热点阅读