簡體   English   中英

在目標C中使用枚舉數據類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM