我已经声明了一个枚举数据类型,如:
typedef enum TagTypes
{
BUTTON_TAG_1 = 1,
BUTTON_TAG_2,
BUTTON_TAG_3,
NEW_TAG
}ButtonTag;
typedef enum TagType
{
LABEL_TAG_1 = 1,
LABEL_TAG_2,
NEW_TAG
}LabelTag;
我希望通过此标记值找到按钮或标签的相应标记
(clickedbutton.tag == ButtonTag.BUTTON_TAG1)
或(changingLabel.tag == LabelTag.LABEL_TAG_1)
但是这个语法在Obj C中似乎不可能,它会引发错误,说出预期标识符或“)”
有没有办法可以通过指定tagDatatype来选择tagNames,如:
LabelTag.LABEL_TAG_2, ButtonTag.BUTTON_TAG2, ...
感谢您的帮助
clickedbutton.tag == BUTTON_TAG1可以使用,但我更喜欢像tagName.tagValue一样使用它,这样我就可以为不同的标签集设置相同的tagValues,在LabelTag和ButtonTag中都使用tagValue“NEW_TAG”。
答案 0 :(得分:5)
我认为它遵循的原则与您在C中编写
的惯例相同if (clickedbutton.tag == BUTTON_TAG1)
未指定枚举类型。您只需在变量时指定类型。
答案 1 :(得分:0)
看看Apple的标题。它们只是在所有枚举条目前加上枚举的名称,例如:枚举UIViewAnimationCurveEaseInOut
中的UIViewAnimationCurve
。我建议你这样做。
答案 2 :(得分:0)
您可以使用switch-case
switch(LabelTag)
{
case : LABEL_TAG_1
break;
case : LABEL_TAG_2
break;
}
答案 3 :(得分:0)
如果确实想要使用LabelTag :: LABEL_TAG_2的形式,您可以使用objective-c ++模式(将文件扩展名更改为.mm
)并执行此操作:
class FirstEnum
{
public:
enum { a, b, c } ;
} ;
class SecondEnum
{
public:
enum { a, b, c } ;
} ;
然后在您的代码中可以参考LabelTag::a
例如。