0

プログラムで UIButton のボタン タイトルを変更しました。また、変更されたボタンのタイトルにアクションを割り当てました。ボタンをタップすると、両方のアクションがトリガーされます(ボタンのタイトルが同じものと変更されたもの)。ただし、変更されたタイトル ボタンに対して 1 つのアクションのみをトリガーしたいと考えています。

どうすればできますか?どんな助けでも大歓迎です。

4

3 に答える 3

1

2 つのソリューション。メソッド間でターゲット/アクションを切り替えるか、状態に基づいて何をすべきかを決定します。

1.

- (void)method1:(id)sender;
{
  [sender removeTarget:nil action:NULL forControlEvents:UIControlEventTouchUpInside];
  [sender addTarget:self action:@selector(method2:) forControlEvents:UIControlEventTouchUpInside];
}

- (void)method2:(id)sender;
{
  [sender removeTarget:nil action:NULL forControlEvents:UIControlEventTouchUpInside];
  [sender addTarget:self action:@selector(method1:) forControlEvents:UIControlEventTouchUpInside];
}

2a.

- (void)buttonTapped;
{
  if (self.someState) {

  } else {

  }
}

2b.

- (void)buttonTapped:(UIButton *)button;
{
    if ([[button titleForState:UIControlStateNormal] isEqualToString:@"First title"]) {

    } else {

    }
}
于 2012-08-11T13:05:01.277 に答える
0

コントロール ステート touchupinside の同じボタンに 2 つのアクションを割り当てると、常に両方がトリガーされます。最初のアクションを削除して 2 番目のアクションを追加し、2 番目のアクション自体を削除して、最初のアクションをセレクター関数の最後に再度追加する必要があります。

以下は、ボタンのデフォルトのアクションです。

[button addTarget:self:action:@selector(actionOne)forControlEvents:UIControlStateTouchUpInside]

actionOne では、最初のアクションの remove オブザーバーを呼び出して、2 番目のアクションを追加できます。

    [button addTarget:self:action:@selector(actionTwo)forControlEvents:UIControlStateTouchUpInside]

そして actionTwo 関数では、逆のことを行います

于 2012-08-11T11:47:36.713 に答える
0

2つの条件を作る代わりに

f([urlresponse status code] == 200) 
{
[myButton setTitle:@"Unfollow" forState:UIControlStateNormal]; //title changed 

[myButton addTarget:self action:@selector(unfollowButtonPressed:) forControlEvents:UIControlEventTouchUpInside];

} 

あなたの場合に役立つかもしれません。

于 2012-08-11T13:51:19.650 に答える