界面生成器无法识别动作方法

4

我正在尝试在界面构建器中将UIButton连接到IBAction,但是IB不会显示我定义的方法作为连接选项。

- (IBAction)someAction:(id)sender;

这是我在头文件中的内容,然后在M文件中我有:
- (IBAction)someAction:(id)sender{
NSLog(@"Button Tapped.");   }

我知道 IB 文档与该类相关联,因为该类也有一个 UIPicker,并且连接正常。

对此有任何帮助都会很棒,

谢谢, Callaghan001。


你保存了头文件吗? - Satyam
6个回答

4

我通过手动从Interface Builder中读取类文件来解决了这个问题。只需执行“文件”->“读取类”->找到您在其中定义IBAction的.h文件。->打开!然后Interface Builder会说“已解析一个类文件”之类的话。


这也可以显示出IB错误消息,这在追踪其他情况下IB混淆的情况下非常有用。 - JJ Rohrer

3

请确保您实际上是将处理程序连接到按钮的事件(可能是touch up inside),而不是连接到按钮本身。因此,不要直接从按钮拖动,而是使用ctrl-click按钮以查看其连接,并从其touch up inside事件拖动到目标,或者使用ctrl-click目标,找到操作,然后从该操作拖动到按钮。如果在这些情况下操作没有显示在目标上,并且您确定界面构建器知道它是什么类,则我感到困惑。


不,我正在使用“touch up inside”选项,但它仍然没有显示出来。这真的很烦人。我之前也见过这种情况,上次更新Xcode后就出现过一次,最终它又不知道为什么开始工作了,但这真的很令人沮丧。 - Callaghan001
那我就不知道了。除了明显的“解决方案”,比如重新启动Xcode/Interface Builder,我想你应该已经尝试过了。 - zem
1
刚刚尝试了重启并清除了机器的PRAM,最终它现在可以正常工作了,而且代码没有任何改变。让人难以想象为什么一开始它不能正常工作。 - Callaghan001

1

同样的问题,读取类文件并没有解决它,但是在控制器身份检查器中将类名从UIViewController更改为正确的子类名解决了它。


1
我遇到了这个问题,重启Xcode并没有解决它。
对我有帮助的是:
  1. 选择文件所有者(File Owner)
  2. 进入身份检查器(Identity Inspector)(在实用工具(Utilities)下方的右侧面板中)。
  3. 自定义类(Custom Class)部分,只需选择文本字段(其中应显示您的自定义UIViewController子类名称)并按“Enter”键。

1
尝试在.h文件中添加-(IBAction)testFunction:(id)sender; 对我有用。

-2

我认为你的实现必须是

- (void)someAction:(id)sender
{
    NSLog(@"Button Tapped.");   
}

没有任何IBAction也能工作,我通过重置PRAM来解决了这个问题,会继续关注它,希望不会再发生。 - Callaghan001

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接