ボタンを 3 つの異なる場所に移動する必要がある理由を教えてください。とにかく、いくつかのロジックに基づいて変更を行うことを願っています。そのため、ヘッダー ファイルで 3 つの列挙型を定義します。たとえば、次のようなものです。
typedef enum {
buttonState1,
buttonState2,
buttonState3
} buttonState;
次に、ビジネス ロジックの要件に従って、これらの enum 変数をコード内の適切な場所に設定します。たとえば、次のようになります。
-(void)setButtonState{
buttonState = buttonState1;
}
次に、ボタン touch-up-inside ハンドラ ルーチンで、switch ステートメントを使用して適切なフレームを設定します。たとえば、次のようになります。
- (void)Switch3WayPressed:(id)sender {
if (![sender isKindOfClass:[Switch3Way class]])
return;
switch (buttonState)
{
case buttonState1:
{
CGRect frame = Switch3Way.frame;
frame.origin.x = 323;
frame.origin.y = 262;
Switch3Way.frame = frame;
break;
}
case buttonState2:
//some other rect origin based on your logic
break;
case buttonState3:
//some other rect origin based on your logic
break;
default:
break;
}