有一個CustomCell,想實現在點擊它所在按鈕時會發出警報。不知道怎麼訪問這個方法?
@interface CustomCell : UITableViewCell {
IBOutlet UIImageView *imageViewCell;
IBOutlet UILabel *theTitle;
IBOutlet UIButton*imageButton;
}
@property(nonatomic,retain) IBOutlet UIButton*imageButton;
@property(nonatomic,retain) UIImageView *imageViewCell;
@property(nonatomic,retain) UILabel *theTitle;
-(IBAction)imageButtonAction;
@end
@implementation CustomCell
@synthesize imageViewCell;
@synthesize theTitle;
-(IBAction)imageButtonAction{
}
不是要在這裡調用方法,我希望的是方法在使用CustomCell中類中。
這裡就需要用到“代理協議”的方法來解決這個問題
首先在你的CustomCell的.h頭文件中定義一個“協議”protocol ,並在CustomCell中添加一個delegate的屬性
@protocol CustomCellDelegate <NSObject>
//創建一個當點擊imagebutton時顯示title的信息
-(void)showTitle:(NSString *)title;
@end
@protocol CustomCellDelegate;
@inertface CustomCell: UITableViewCell
//多添加一個屬性
@property (nonatomic,assign) id <CustomCellDelegate> delegate;
@end
在.m實現文件的imagebutton click事件中
@implementation CustomCell
@synthesize delegate;
//imagebutton的點擊事件
-(IBAction)imageButtonAction {
if ([delegate isRespondToSelector:@selector(showTitle:)]) {
[delegate showTitle:theTitle.text]; //將UILabel的內容傳遞到消息接收者
}
}
@end
在帶有CustomCell的UITableView 所在的viewController 的.h頭文件中添加CustomCellDelegate 的協議
@interface myViewController:UIViewController <CustomCellDelegate>
@end
在viewController 的.m實現文件中,UITableView 的datasource 協議方法中:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*) indexPath {
CustomCell *cell=[[[CustomCell alloc] init] autorelease];
cell.delegate=self; //指明CustomCell的代理為當前的viewController
............ //todo
return cell;
}
//實現CustomCellDelegate的協議方法
-(void)showTitle:(NSString *)title {
NSLog("the cell title is :%@",title);
}