0
CGRect buttonFrame = CGRectMake( 10, 80, 100, 30 );
UIButton *button = [[UIButton alloc] initWithFrame: buttonFrame];
[button setTitle: @"Start" forState: UIControlStateNormal];
[button addTarget:self action:@selector(start_Accel) forControlEvents:UIControlEventTouchUpInside];
[button setTitle: @"Stop" forState: UIControlEventTouchUpInside];
[button addTarget:self action:@selector(stop_Accel) forControlEvents:UIControlEventTouchUpInside];
[view addSubview:button];

ユーザーが押すと加速度計の更新を開始および停止できるボタンを作成したいのですが、タイトルも開始から停止に変更する必要があり、ユーザーがanoterhボタンですべてをリセットするまで継続する必要がありますが、取得することはできません。次のコードを除いて、完了しましたが、タイトルを変更せず、ストップアクションを呼び出しますか?

前もって感謝します!

4

4 に答える 4

4

ある種のボタンの状態を管理します。@propertyを使用して、1つのアクションのみを使用します。

あなたの中で.h

@property (nonatomic) BOOL startStopButtonIsActive;

あなたの.mで

@synthesize startStopButtonIsActive = _startStopButtonIsActive;

 ....

- (void)viewDidLoad {
       [button addTarget:self action:@selector(startStopButtonPressed) forControlEvents:UIControlEventTouchUpInside];
      // other stuff
}

- (void)startStopButtonPressed {
    if (startStopButtonIsActive) {
        self.startStopButtonIsActive = !self.startStopButtonIsActive  //toggle!
        // do your stuff here
    } else {
        self.startStopButtonIsActive = !self.startStopButtonIsActive  //toggle!
        // do your stuff here
    }
} 
于 2012-06-17T07:37:21.790 に答える
1

あなたは近くにいます。

ボタンにターゲットを1つだけ追加します。これにより、現在の状態を認識しているターゲットメソッドが作成されます。メソッドの引数として送信者を受け取るように、セレクターにコロンがあることを確認してください。すなわちstartOrStopAccel:startOrStopAccel

状態に応じて、start_Accelまたはその1つのターゲットメソッドを呼び出すことができます。stop_Accel

-(void) viewDidLoad {
    //...
    //...
    CGRect buttonFrame = CGRectMake( 10, 80, 100, 30 );
    UIButton *button = [[UIButton alloc] initWithFrame: buttonFrame];
    [button setTitle: @"Start" forState: UIControlStateNormal];
    [button addTarget:self action:@selector(startOrStopAccel:) forControlEvents:UIControlEventTouchUpInside];
    [view addSubview:button];
}

-(void)startOrStopAccel:(UIButton*)sender {
    if ([sender.title isEqualToString:@"Start"]) {
        [sender setTitle: @"Stop" forState: UIControlStateNormal];
        [self start_Accel];
    }
    else {
        [sender setTitle: @"Start" forState: UIControlStateNormal];
        [self stop_Accel];
    }
 }
于 2012-06-17T07:51:05.460 に答える
0

この場合、ターゲットは1つだけである必要があり、署名に引数を追加して、アクションとともにボタンを渡す必要があります。

[button addTarget:self action:@selector(accelButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
// the interface being:
-(void) accelButtonPressed:(UIButton *) sender;

そのメソッド内で、状態の確認と状態の変更、およびボタンのプロパティ(「送信者」で参照されます)を確認できます。

于 2012-06-17T07:38:43.073 に答える
0

まず、ボタンと整数変数を.hファイルで宣言します。

それから 、

intergervariable=0;

    button = [[UIButton alloc] initWithFrame: buttonFrame];
    [button setTitle: @"Start" forState: UIControlStateNormal];
    [button addTarget:self action:@selector(start_Accel) forControlEvents:UIControlEventTouchUpInside];
    [view addSubview:button];

after that inside the start_Accel function check like this


if(intergervariable==0)
{
intergervariable=1; 
[button setTitle: @"Start" forState: UIControlStateNormal];
}
else if(intergervariable==1)
{
intergervariable=0;
 [button setTitle: @"Stop" forState: UIControlStateNormal];
}
于 2012-06-17T07:40:33.940 に答える