像Interface的Interface Builder的“tag”属性

时间:2009-11-01 04:08:18

标签: objective-c iphone

我目前正努力在Interface Builder中使用UI元素。我一直在尝试“以.NET方式做事”。

我有几个按钮都将他们的TOUCH事件映射到相同的功能:

-(IBAction) onTouch:(id) sender
{
  // do something with touch, DEPENDING ON WHAT BUTTON WAS PUSHED
  // I want to do something like
  if( sender.tag == "something" ) 
  {
     //...doesn't work on apple, of course..
  }
}

我想要像.NET中的TAG属性一样唯一地识别每个使用SOMETHING的按钮。我尝试使用界面构建器“Identity”面板上的INTERFACE BUILDER“NAME”字段,但我不知道如何以编程方式访问该字段

-(IBAction) onTouch:(id) sender
{
  // do something with touch, DEPENDING ON WHAT BUTTON WAS PUSHED
  // I want to do something like
  if( sender.InterfaceBuilderName == "something" ) 
  {
     //...doesn't work..
  }
}

那么,有什么方法可以唯一地识别UI元素(例如按钮),而不是像

那样做
-(IBAction) onTouch:(id) sender
{
  // look at
  [sender currentTitle]
}

之所以糟糕,是因为如果按钮上的文字因某些美容原因而发生变化,则会破坏整个应用程序,对吧

我能想到的最后一个解决方案是为每个按钮的触摸事件编写单独的函数,但我真的想知道是否可以通过某种东西唯一地标识按钮类似于.Net的TAG属性。

3 个答案:

答案 0 :(得分:2)

在iPhone SDK中,所有UIView对象都有一个属性,也称为tag,它是一个整数值,基本上可用于执行您想要的操作。

我通常为我将用于特定目的的标记值定义一个常量。

您可以访问按钮对象上的标记:

myButton.tag = MYBUTTON_TAG_CONSTANT

// button tag constant
#define MYBUTTON_TAG_CONSTANT 1

答案 1 :(得分:2)

对于按钮,“视图”部分中有一个标记条目(单击按钮,从“工具”菜单中选择“属性检查器”)。然后,您可以在代码中使用此整数值。

这是一个可能有用的链接:

http://www.iphonedevsdk.com/forum/iphone-sdk-development/25582-using-tags-interface-builder.html

答案 2 :(得分:1)

UIView的tag属性可从Interface Builder访问。与.NET不同,它是一个整数而不是字符串。