从代码中调用IBAction方法

时间:2011-02-18 17:23:07

标签: iphone objective-c cocoa-touch

我有一个按钮findTarget_Btn,我想在其上调用方法moreDetails。 在viewDidLoad中,我正在写

[findTarget_Btn addTarget:self action:@selector(moreDetails) forControlEvents:UIControlEventTouchUpInside];

但是出于某种原因,单击按钮时没有调用moreDetails?难道我做错了什么?

如果我在按钮上调用2个方法也没关系; 1通过IB和其他类似于上面的通过代码?

2 个答案:

答案 0 :(得分:4)

检查moreDetails的定义方式。最有可能的是,它需要id sender参数:在这种情况下,您应该使用@selector(moreDetails:)(冒号签名反映参数的存在)

关于你的第二个问题:是的,你绝对可以从你的代码中调用其他动作。 IBAction只是void的同义词,与其他任何方法都没有区别。

修改
我可能误解了你的第二个问题。如果要在IB中分配一个操作,在代码中分配另一个操作,则可能无效。但是你总是可以创建一个专用的处理程序并从中顺序调用两个方法。

- (IBAction) findTargetClick:(id) sender {
  [self handler1:sender];
  [self moreDetails:sender];
}

答案 1 :(得分:0)

您确定已为findTarget_Btn分配了一些内容吗?如果您忘记初始化它或者您正在使用笔尖而忘记将其连接为插座,那么它将为零,因此您发送给它的任何消息都将被忽略。