[英]Using enum datatype in Objective C
我已經聲明了一個枚舉數據類型,如:
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”。
我相信它遵循與您剛剛編寫的C語言相同的約定
if (clickedbutton.tag == BUTTON_TAG1)
不指定枚舉類型。 您只需在其為變量時指定類型。
看看蘋果的標題。 他們只是前綴的枚舉的名稱,例如,所有的枚舉項UIViewAnimationCurveEaseInOut
在枚舉UIViewAnimationCurve
。 我建議你這樣做。
您可以使用switch-case
switch(LabelTag)
{
case : LABEL_TAG_1
break;
case : LABEL_TAG_2
break;
}
如果您確實要使用LabelTag :: LABEL_TAG_2的形式,則可以使用Objective-C ++模式(將文件擴展名更改為.mm
),然后執行以下操作:
class FirstEnum
{
public:
enum { a, b, c } ;
} ;
class SecondEnum
{
public:
enum { a, b, c } ;
} ;
然后在您的代碼中可以例如引用LabelTag::a
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.