2012-01-08 5 views
1

私はこのようなIBAction作成しました:-(IBAction) buttonTapped:(id)sender;とインタフェースビルダを使用してUIButtonにそれを接続し、問題は、私は、コンパイラは私に構文エラーになりますNSLog(@"%d",sender.tag);ような何かを行うことができないということですタグのプロパティはタイプidのオブジェクトには存在しませんが、NSLog(@"%@", sender);のようなものをコンソールに表示すると、のタグ ...という情報が表示されます。送信者オブジェクトを介してUIButton

答えて

5

キャストしようとしましたsender?たとえば、次のように

NSLog(@"%d", ((UIButton *)sender).tag); 
+0

クール...ありがとうございました.... – JAHelia

2

あなたは、コンパイラはオブジェクトの種類(したがって、IDのタイプを)知らないので、それをキャストする必要がありますが、ランタイムは知っているだろう。

だから、それはに似ています:

NSLog(@"%d", [(UIButton*)sender tag]); 
3

代わりの鋳造、それは多くの場合、ちょうどあなたの行動宣言でより具体的にクリーンなコードになり:

-(IBAction) buttonTapped:(UIButton*)sender; 

あなたはUIButton、Uicontrolのを使用することができます、UIView、または必要とする任意のレベルの特異性。

+0

これは別のクールな答えです... – JAHelia