2013-05-08 86 views
0

我有一个UITableViewCell,并且我的单元格包含一个UIButton子类(CoolButton)。 我从raywenderlich教程 available here如何实例化UITableViewCell中的自定义UIButton

挑CoolButton的代码在IB我已经创建了的UITableViewCell的子类,我已经配置了一流的我的按钮来CoolButton并设置属性类型,以自定义和配置IBOutlet中将CoolButton添加到我的UITableView子类中。

我的问题是当单元格被创建时,他们得到一个UIButton而不是CoolButton。因此,当我设置CoolButton的属性时,我遇到了“无法识别的选择器”。

为什么UIButton被实例化而不是CoolButton?我怎样才能让我的CoolButton在桌子上?

谢谢,

Séb。

+0

请发布您的代码,以便我们了解问题所在。 – Amit 2013-05-08 23:22:23

回答

0

我会想你正在做的事情,如:

CoolButton *b = [UIButton ...] 

您需要使用CoolButton类来创建它:

CoolButton *b = [CoolButton ....]; 

或者,如果你使用的IB,您创建一个UIButton,但使用了CoolButton的IBOutlet。您需要将您拖入IB CoolButton的按钮的实际类别做成,您可以通过选择该按钮并轻敲(我认为)第二个按钮到检查器中的左上方选项卡。

+0

感谢您的回答。我正在使用IB,但正如我所解释的,我将按钮的实际类别创建为CoolButton,然后将其拖到我的UITableViewCell子类(它已创建CoolButton类的属性)。不幸的是,它不起作用,它仍然实例化一个UIButton而不是CoolButton。 – sebastien 2013-05-08 22:08:07

+0

啊,CoolButton可能不会实现“-initWithCoder”,这是当一个对象来自IB时被使用的东西,所以当IB调用它的时候,它会下到UIButton的。将它添加到课程中,您现在将拥有一个CoolButton。几年前我曾经用过这门课,现在我得到了一个模糊的记忆拖,我不得不这样做。您可以将现在在initWithFrame中运行的任何代码放入“setup”方法中,并从initWithFrame和initWithCoder中调用该方法。添加一个NSLog到initWithCoder,如果你没有看到这个消息,你没有在IB中获得正确的类。 – 2013-05-08 22:40:11

+0

我发现了这个问题,并且我正在冒充一点点白痴...... 问题是源文件Common.m和CoolButton.m未包含在我的目标项目中(在构建阶段/编译源代码中)。 当我在我的项目中导入这些文件时,我只是拖放源文件,但我忘了在“构建阶段/编译源代码”中添加它们。 现在,它的工作,我可以使用IB的这个“酷按钮”。我接受你的答案,因为它是实例化按钮的正确方法。 谢谢 – sebastien 2013-05-09 17:36:47