向 UIButton 添加插座
Posted
技术标签:
【中文标题】向 UIButton 添加插座【英文标题】:Adding outlets to UIButton 【发布时间】:2010-03-27 09:51:32 【问题描述】:为了快速模拟 UI,我希望能够将按钮拖到界面构建器中的视图上,然后将连接从该按钮拖到单击它时应该出现的视图。
UIButton 的子类在 IB 中使用有点不方便,所以我更愿意将行为添加到 UIButton 本身。不幸的是,在某个类别中创建的网点似乎在 IB 中不可见:
@interface UIButton (myextensions)
IBOutlet UIView *outletDestination;
@end
这样可以增加额外的插座吗?
【问题讨论】:
【参考方案1】:这样可以增加额外的插座吗?
不。您不能通过在类别中声明它们来添加实例变量。
但是,您可以添加属性,并且可以将IBOutlet
放在属性上,这样您就可以通过这种方式添加网点。使用现代运行时(iPhone 上唯一可用的运行时),属性可以添加实例变量。
如果您打算为该属性创建自定义访问器(您必须使用@synthesize
),我认为您不能这样做,但这听起来对您的情况并不重要:您只是在嘲笑向上 UI,因此您无需编写自定义访问器。
或者,您可以在 IB 本身的“库”面板的“类”选项卡上创建出口。在那里选择一个类,然后在下面的窗格中选择 Outlets 选项卡,然后将一个 outlet 添加到列表中。
您需要为其他解决方案打开一个笔尖,否则不会显示任何课程。这是因为它是上下文相关的:Mac nib 将具有 AppKit 类(如 NSButton),而 iPhone nib 将具有 UIKit 类。
【讨论】:
如果我将 @property 添加到 UIButton 类别,我不能使用 @synthesize 因为它是一个类别,并且我不能编写自己的方法,因为没有 ivar 来存储数据。如果我在 IB 中创建插座,“[@synthesize
”是什么意思?当你尝试时会发生什么?
很抱歉我错过了您的评论;我想我没有收到电子邮件通知。使用@synthesize 的错误是:“@synthesize not allowed in a category's implementation”
alltom:嗯。你是对的。抱歉走错路了。我想您必须使用关联引用代替 ivars 来实现自定义访问器,但文档似乎表明该功能在 Cocoa Touch 中尚不可用。 developer.apple.com/iphone/library/documentation/Cocoa/…
这就是我想要的!啊,好吧。以上是关于向 UIButton 添加插座的主要内容,如果未能解决你的问题,请参考以下文章