我有一个按钮findTarget_Btn,我想在其上调用方法moreDetails。 在viewDidLoad中,我正在写
[findTarget_Btn addTarget:self action:@selector(moreDetails) forControlEvents:UIControlEventTouchUpInside];
但是出于某种原因,单击按钮时没有调用moreDetails?难道我做错了什么?
如果我在按钮上调用2个方法也没关系; 1通过IB和其他类似于上面的通过代码?
答案 0 :(得分:4)
检查moreDetails
的定义方式。最有可能的是,它需要id sender
参数:在这种情况下,您应该使用@selector(moreDetails:)
(冒号签名反映参数的存在)
关于你的第二个问题:是的,你绝对可以从你的代码中调用其他动作。 IBAction
只是void
的同义词,与其他任何方法都没有区别。
修改强>
我可能误解了你的第二个问题。如果要在IB中分配一个操作,在代码中分配另一个操作,则可能无效。但是你总是可以创建一个专用的处理程序并从中顺序调用两个方法。
- (IBAction) findTargetClick:(id) sender {
[self handler1:sender];
[self moreDetails:sender];
}
答案 1 :(得分:0)
您确定已为findTarget_Btn
分配了一些内容吗?如果您忘记初始化它或者您正在使用笔尖而忘记将其连接为插座,那么它将为零,因此您发送给它的任何消息都将被忽略。