如何为基类中实现的按钮调用目标方法

时间:2014-04-16 09:09:20

标签: ios objective-c

在我的项目中,我有一个Baseclass:UIViewController。我以编程方式创建了一个UIButton,并在基类中创建了该按钮的目标方法。  我创建了一个继承自基类的视图控制器。问题是按钮反映在屏幕上,但是当我点击它时没有任何反应。请指导我如何为从基类继承的按钮创建一个Action

//method in base class that addss button
-(void)addRHSRoundButton{
    UIImage *imgNotSelected = [UIImage imageNamed:@"MENU_NOT_SELECTED.png"];
    button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage:imgNotSelected forState:UIControlStateNormal];
     button.frame = CGRectMake(978, 340, imgNotSelected.size.width/2,   imgNotSelected.size.height/2);
    [button addTarget:self action:@selector(roundButtonClicked) forControlEvents:UIControlEventTouchUpInside];
    button.tag= 101;
    [self.view addSubview:button];
}

1 个答案:

答案 0 :(得分:0)

您的方法与您使用方法roundButtonClicked创建目标并不匹配,但您希望运行方法RHSRoundButtonClicked。

如果您将按钮作为参数传递,那就太好了。像这样修改你的方法:

-(void)RHSRoundButtonClicked:(id)sender
{ 
    NSLog(@"btnClicked"); button.hidden = YES; 
}

并将创建按钮目标的行更改为:

[button addTarget:self action:@selector(RHSRoundButtonClicked:) forControlEvents:UIControlEventTouchUpInside];

//扩展

如果你想调用超类方法,你可以调用super而不是self:

[button addTarget:super action:@selector(RHSRoundButtonClicked:) forControlEvents:UIControlEventTouchUpInside];

这应该有所帮助。