Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 向UIButton添加插座_Iphone_Cocoa_Interface Builder_Uibutton - Fatal编程技术网

Iphone 向UIButton添加插座

Iphone 向UIButton添加插座,iphone,cocoa,interface-builder,uibutton,Iphone,Cocoa,Interface Builder,Uibutton,为了快速模拟UI,我希望能够将按钮拖到interface builder中的视图上,然后将该按钮的连接拖到单击时应显示的视图上 UIButton的一个子类在IB中使用有点不方便,所以我更愿意将行为添加到UIButton本身。不幸的是,在IB中似乎看不到在某个类别中创建的门店: @interface UIButton (myextensions) { IBOutlet UIView *outletDestination; } @end 这样可以增加额外的插座吗 这样可以增加额外的插座吗

为了快速模拟UI,我希望能够将按钮拖到interface builder中的视图上,然后将该按钮的连接拖到单击时应显示的视图上

UIButton的一个子类在IB中使用有点不方便,所以我更愿意将行为添加到UIButton本身。不幸的是,在IB中似乎看不到在某个类别中创建的门店:

@interface UIButton (myextensions) {
    IBOutlet UIView *outletDestination;
}
@end
这样可以增加额外的插座吗

这样可以增加额外的插座吗

没有。不能通过在类别中声明实例变量来添加它们

但是,您可以添加属性,并且可以在属性上放置
IBOutlet
,这样您就可以这样添加插座。使用现代运行时(iPhone上唯一可用的运行时),属性可以添加实例变量

如果你想为属性创建一个自定义访问器(你必须使用
@synthesis
),我不认为你可以这样做,但这听起来对你的情况并不重要:你只是在模拟UI,所以你不打算编写自定义访问器

或者,您可以在“库”面板的“类”选项卡上在IB本身中创建插座。在那里选择一个类,然后选择下面窗格中的“出口”选项卡,然后将出口添加到列表中


您需要为另一个解决方案打开一个nib,否则不会显示任何类。这是因为它是上下文敏感的:Mac nib将有AppKit类(如NSButton),而iPhone nib将有UIKit类。

如果我在UIButton类别中添加@属性,我就不能使用@Synthesis,因为它是一个类别,我也不能编写自己的方法,因为没有ivar来存储数据。如果我在IB中创建插座,“[setValue:forUndefinedKey:]:此类不符合密钥目标的键值编码。”我也使用UIRoundedRectButton尝试了上述所有操作。在IB中添加插座仅对模拟有用;当您开始实际编程时,您可以并且应该在标题中声明出口。“我不能使用
@synthesis
”是什么意思?当你尝试时会发生什么?很抱歉,我错过了你的评论;我想我没有收到电子邮件通知。使用@synthesis的错误是:“@synthesis不允许在类别的实现中使用”alltom:Huh。你说得对。对不起,走错了路。我想您必须使用关联引用来实现一个自定义访问器,以代替IVAR,但文档似乎表明该功能在Cocoa Touch中还不可用。那就是我想要的!啊,嗯。