UI04_UITarget-Action

目的:通过MyButton实现button的点击效果

Button.h

1.通过定义的方法,把目标和动作传到类的内部(用id的原因是它针对所有对象)
-(void)addNewTarget:(id)target Action:(SEL)action;
解释:target:目标,button执行哪一个类的方法,对应的目标是那个类的对象
    action:动作,让button具体做什么事,执行的方法就是对应的动作
2.通过两条属性,把对应的目标和动作保存起来
@property (nonatomic, assign) id target;
@property (nonatimic, assign) SEL action;

Button.m

3.实现对应的自定义的方法,并且让两个属性来保存对应的目标和动作
-(void)addNewTarget:(id)target Action:(SEL)action
{
self.action = action;
self.target = target;
}

4.给button一个触发的条件,重写触摸开始方法,只要以触碰touchesBegin方法,就会让button执行相应的点击方法
 //点击触发条件
 -(void)touchesBegin: (NSSet *)touches withEvent:(UIEvent *)event
 {
    //5.谁(self.target)的方法谁(self)把它的方法(self.action)交给谁(self)来做;
    //类把他的方法交给MyButton来完成

    [self.target performSelectorInBackground:self.action withObject:self];

     //这个是类自己的方法,它本身是个空操作,我们再次申明是添加自己的动作.
     //self.action对应的是MainController的click:方法
 }
之所以点击方法放在MyButton里是因为触发方法是MyButton里执行;说要用这个触发方法那么这个触发方法的控件有触发这个方法
触发方法
-(void)touchesBegan:(NSSet *)touchesWithEvent:(UIEvent *)event
{
   [self.target performSelectorInBackground:self.action withObject:self];
}
//程序运行的过程是现在MainViewController里运行创建的myButton.调用我们设立的方法添加到myButton会触发我们设置的触发方法.再运行

MainViewController.m(引MyButton的头文件)

6.使用自定义的方法
   我们写这种方法就是自己的事让别人来做
   MyButton *myButton=[[MyButton alloc]initWithFrame:CGRectMake(100, 100, 150, 40)];
   myButton.backgroundColor=[UIColor redColor];
   [self.view addSubview:myButton];
   [myButton addNewTarget:self Action:@selector(click:)];
//点击触发
-(void)click:(MyButton *)button{
    NSLog(@"实现点击效果");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值