2012-03-17 3 views
0

を列挙データ型を使用した:私は私のような列挙型のデータ型宣言しているのObjective Cで

(clickedbutton.tag == ButtonTag.BUTTON_TAG1)または(changingLabel.tag == LabelTag.LABEL_TAG_1)

としてこのタグ値によるボタンやラベルの対応するタグを探していました

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; 

この構文はObj Cでは可能ではないようですが、予想識別子または ")"というエラーが表示されます

私の好きなtagDatatypeを指定することで、タグ名を選択することができる方法があります:

clickedbutton.tagは== BUTTON_TAG1が動作する任意の助け

LabelTag.LABEL_TAG_2, ButtonTag.BUTTON_TAG2, ... 

おかげで、私はそう、tagName.tagValueようにそれを使用することを好みます異なるタグセットに対して同じtagValuesを持つことができることは、LabelTagとButtonTagの両方で "NEW_TAG"というtagValueと言います。

+0

エラーが発生していませんか?列挙子の再宣言? –

+0

@ParagBafna:そのエラーを回避する方法はありますか? – JohnK

答えて

5

私はそれはあなただけの列挙型を指定せずに

if (clickedbutton.tag == BUTTON_TAG1) 

を書くCの場合と同様、それは同じ規則に従いますと信じています。変数を指定する場合は、型を指定するだけです。

+0

はい、それはうまくいきますが、tagName.tagValueのように使いたいので、LabelTagとButtonTagの両方でtagValue "NEW_TAG"と言うように、別のタグセットに対して同じtagValuesを持つことができます。 ご協力いただきありがとうございます。 – Friendtam

+1

@Prabhakaran Paulthiravium既に十分な答えがあるので、私はタグが整数typであると付け加えたいと思います。ですから、あなたのボタンを正しく初期化するだけです。 'button1.tag = BUTTON_TAG_1'。列挙型を使用しているので、タグの名前をより意味のある名前に変更したい場合があります。そうでない場合は、数字として指定されたシンボルの番号を取引しています。 –

0

アップルのヘッダーを見てください。それらは、すべてのenumエントリの前に、enumの名前を付けるだけです。 EnumのUIViewAnimationCurveEaseInOutUIViewAnimationCurve。私は同じことをお勧めします。

0

あなた本当にがLabelTagのフォームを使用する場合は:: LABEL_TAG_2あなたはObjective-Cの++モード(.mmにファイルの拡張子を変更)を使用すると、これを行うことができますが、switch-case

switch(LabelTag) 
{ 
    case : LABEL_TAG_1 

    break; 

    case : LABEL_TAG_2 

    break; 
} 
0

を使用することがあります。

class FirstEnum 
{ 
    public: 
    enum { a, b, c } ; 
} ; 

class SecondEnum 
{ 
    public: 
    enum { a, b, c } ; 
} ; 

コードでは、たとえばLabelTag::aを参照できます。