給定製的UITableViewCell裏的控件點擊設置代理

功能:

界面用TableView實現,其中有兩個定製的cell,cell裏放置了幾個SDWebImageView並添加點擊手勢來捕獲事件。開始寫的時候,只是在定製Cell類裏定義了界面,然後在引用的Controller裏添加手勢。發現代碼重複了,就換用Delegate實現,整潔多了。

圖片(App:愛飛揚旅遊):

請輸入圖片描述

實現

界面用一個tableview實現,上面的圖片是tableview的HeadView。Cell裏的圖片可以點擊,push到下個界面,點擊事件綁定在Cell的類裏。在引用cell的類裏給cell設置tag,區分點擊事件的來源。

Cell的代碼(部分):

.h文件

@class StragetyMainPageCell;

@protocol MainPageCellDelegate <NSObject>
- (void)ImageTap1:(StragetyMainPageCell *)cell;
- (void)ImageTap2:(StragetyMainPageCell *)cell;
- (void)ImageTap3:(StragetyMainPageCell *)cell;
- (void)ImageTap4:(StragetyMainPageCell *)cell;
- (void)ImageTap5:(StragetyMainPageCell *)cell;
- (void)moreButtonClick:(StragetyMainPageCell *)cell;
@end
@interface StragetyMainPageCell : UITableViewCell
@property (assign, nonatomic) id<MainPageCellDelegate> delegate;
@end

.m文件: 給其中一個圖像添加點擊事件:

UITapGestureRecognizer *imageTap1 = [[UITapGestureRecognizer alloc] initWithTarget:self
 action:@selector(ImageTap1)]; [self.image1 addGestureRecognizer:imageTap1];

具體的點擊事件:

- (void)ImageTap1
{
 if (_delegate && [_delegate respondsToSelector:@selector(ImageTap1:)]) {
 [_delegate ImageTap1:self];
}
}
就可以觸發在引用類裏的代理方法了。一開始不明白爲什麼代理方法的第一個參數要是定義代理的類,這邊可以通過這個cell類的tag,來區分不同點擊事件的來源。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章