如果想要让一个View多次被利用,那么你的view里可以添加事件,但是实现事件的方法不能写在这里,应该是哪个ViewControllor用到,就让谁去实现,基本的思路是这样的
一.在View的头文件中写一个protocol,写一个这个view的代理,并把事件的函数写下来
二.在view的头文件中把写的代理设置一个属性
三.在view的.m文件中把事件的函数写进来,但是不实现,具体的写法在下面会详细介绍
四.在引用View的ViewControllor中引入代理,初始化并设置其代理为本身,要特别注意的是要给谁初始化要分清
五.完成事件的方法
具体代码如下:
View的.h文件中
// BFGoodsListCell.h
// Chastory
//
// Created by tf on 13-8-27.
// Copyright (c) 2013年 Gabry. All rights reserved.
//
#import <UIKit/UIKit.h>
@class gift_goods_category;
//添加代理,注意代理的命名方法
@protocol BFGoodsListCellDelegate <NSObject>
//代理方法
-(void)changView;
@end
@interface BFGoodsListCell : UITableViewCell
//设置一个代理属性
@property (weak,nonatomic)id<BFGoodsListCellDelegate>delegate;
@end
在View的.m文件中
@synthesize delegate;
-(void)viewDidLoad
{
self.RightView = [[UIImageViewalloc]initWithFrame:CGRectMake(160,0, 145,110)];
self.RightView.backgroundColor = [UIColorwhiteColor];
//为图片添加点击动作
self.RightView.userInteractionEnabled =YES;
UITapGestureRecognizer * RightTapGesturRecognizer = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(chang)];
[self.RightViewaddGestureRecognizer:RightTapGesturRecognizer ];
[self addSubview:self.RightView];
}
//点击图片对应的方法,但是不在这里实现
-(void)chang
{
这是固定写法,changVeiw 是protocol中的函数方法
[self.delegate changView];
}
在引用的时候也就是在ViewControllor的.m中,引入所调用界面的头文件和代理
#import "BFScrowAndGoodsListViewController.h"
#import "BFGoodsListCell.h"
@interface BFScrowAndGoodsListViewController ()<BFGoodsListCellDelegate>