Iphone 向UIButton添加插座
为了快速模拟UI,我希望能够将按钮拖到interface builder中的视图上,然后将该按钮的连接拖到单击时应显示的视图上 UIButton的一个子类在IB中使用有点不方便,所以我更愿意将行为添加到UIButton本身。不幸的是,在IB中似乎看不到在某个类别中创建的门店: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 这样可以增加额外的插座吗 这样可以增加额外的插座吗
@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中还不可用。那就是我想要的!啊,嗯。