addTarget parentViewController和xcode警告我,而不是我的选择器未声明

时间:2013-11-30 23:35:03

标签: ios objective-c xcode

它比现实问题更有好奇心,因为它有效。但我不明白xcode警告。 在我的应用程序中,我使用addChildViewController,所以我有一个孩子和一个父母。在我的孩子,我有一个UIButton,我想发生一个父的功能:它工作,但xcode说未声明的选择器parentFunction:/ 我可以声明这个函数来删除这个警告,但它将是死代码(坏方法)。 或者我可以使用委托,但为什么在有直接链接时使用委托。

[btn addTarget:self.parentViewController action:@selector(parentFunction:) forControlEvents:UIControlEventTouchUpInside];    //undeclared selector parentFunction

祝你好运

THX

1 个答案:

答案 0 :(得分:4)

您需要导入父视图控制器的.h文件,并将self.parentViewController强制转换为该类,否则编译器不知道该方法是否存在(因为parentViewController返回的是UIViewController,而不是您的自定义控制器)。

[btn addTarget:(ParentClass *)self.parentViewController action:@selector(parentFunction:) forControlEvents:UIControlEventTouchUpInside];

将ParentClass替换为该父类的类名。另外,确保parentFunction:在父类中实现(并且具有冒号),并在其.h文件中声明。