寫這篇文章純屬打發(fā)時(shí)間用......
需求:cell的按鈕點(diǎn)擊事件的實(shí)現(xiàn)杠园,如圖
在cell.h文件中 先定義一個(gè)block
#import <UIKit/UIKit.h>
@class XSMyFavoriteTableViewCell;
//聲明一個(gè)名為 AddToCartsBlock 無返回值果录,參數(shù)為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(@"點(diǎn)擊了添加到購物車");
}
同理膏执,這個(gè)需求用代理也同樣能實(shí)現(xiàn)痊乾,具體看個(gè)人喜好咯朋贬。
而本人的另一篇文章iOS將數(shù)據(jù)從controller里分離出來減輕controller的壓力也正是利用了block傳值而得以實(shí)現(xiàn)的。
以上蚪燕。