2011-09-13 2 views
1

UIButton、UIImageView、またはその他のオブジェクトをパラメータとして受け入れるメソッドを作成したいとします。私はIDタイプを使って次のように試しました。iOS:複数のオブジェクトタイプをパラメタ(id)オブジェクトとして受け入れますか?

-(void)shiftObject:(id)object { 
     object.frame = CGRectMake(0, 0, 20, 20); 
} 

xcodeスタティックエラーチェッカーがすぐにフラグを立てました。これができる方法はありますか? id型を使って正しい軌道に乗っていると思いますが、ここからどこに行くのかは分かりません。

答えて

3

実際には「他のオブジェクト」、「フレームプロパティを持つ他のオブジェクト」と一緒に使用することはできません。

したがって、UIViewのようなフレームで何かにキャストしてみてください。あなたが言及したすべてのオブジェクトは、UIViewから継承し、したがって、フレームプロパティを持っています。

-(void)shiftObject:(id)object { 
     ((UIView*)object).frame = CGRectMake(0, 0, 20, 20); 
} 
+0

ありがとう、エバン。私はフレーム付きのオブジェクトに対してのみ使用することを意図していたはずです。これは、私が言及したオブジェクト型、および他の多くのオブジェクトに対して非常にうまく機能します。ありがとうございました! – alexshafran

2

あなたは正しい型に、あなたのオブジェクトをキャストすることができます。

((UIButton*)object).frame = ... 

か、あなたのオブジェクトがである場合は、チェックすべきドット表記

[object setFrame:...]; 

なしでセッターを呼び出すことができます前に正しいタイプか、送信したいセレクターに応答するかを選択します。

関連する問題