如何从id获取Interface Builder名称

时间:2009-11-01 03:39:48

标签: objective-c iphone

如果我在Interface Builder中命名一个小部件,然后我编写了一个接收该按钮上的点击事件的方法:

- (IBAction)btnTouchDown:(id)sender
{
  // how can you identify the button here,
  // if several different buttons map
  // their "Touch" event to this same function?
  // I know you can look at its text but that seems really clumsy
  // can I somehow get its INTERFACE BUILDER NAME?

  // I named each uniquely in interface builder,
  // under "Identity"/"Name"
  // Or is my only recourse to tie EACH BUTTON to its own handler function?
}

2 个答案:

答案 0 :(得分:1)

您必须在视图控制器中将按钮定义为实例变量,然后使用IBOutlet编译指示使其为IB所知。例如,您可以在视图控制器中执行此操作:

UIButton IBOutlet *mybutton;

在这样定义之后,它将显示在您的IB连接中,您可以将其与相应的按钮

相关联

答案 1 :(得分:1)

单击界面构建器中的按钮,按CMD + 2(或在信息对话框中,在第二个选项卡中),然后将圆圈从内部触摸拖动到文件所有者 yourView.xib窗口然后它会让你选择一个具有- (IBAction) method:(id)sender签名的方法。选择要与该按钮关联的那个:)

你说你不想为每个按钮创建一个方法,但实际上这是我认为最好的方法,而不是有一个巨大的单片方法来处理每个按钮并每次检查哪个按钮他们是。使用上面提到的过程,您可以专门将处理程序方法绑定到特定按钮,使事情保持良好,整洁和合理。

如果你真的想这样做,你也可以测试标签号