0

したがって、今まではボタンタグを介して必要なパラメーターを渡すだけでした。しかし、今はすでにタグを別の目的で使用しているため、ボタンを選択したときに、タグを使用して別の文字列とタイマー値を無効または何らかのアクションに渡すことができる必要があります。

これは、ボタンタグをアクションに渡すための現在のボタンコードです(以下)

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

これは、私がそれを渡すボイドまたはアクションです。

-(void)action:(UIButton*)btn{
NSLog(@"%d", [btn tag]);
}

ボタンタグ(文字列など)以外のものをアクションに渡す方法はありますか? だから私はこのようなものを持つことができました。

-(void)action:(UIButton*)btn :myString{
NSLog(@"%d %@", [btn tag], myString);
}

編集: だから今、私のボイドはこのように見える提案のおかげで

-(void)actionWithButton:(UIButton *)btn andString:(NSString *)myString{
NSLog(@"%d %@", [btn tag], myString);
}

しかし、ボタンの @selector 部分に myString パラメータを渡す方法がまだわかりません。

4

5 に答える 5

1

次のように、そのボタンにサブビューとしてUILableを追加できます

 UILabel *lblValue = [[UILabel alloc]initWithFrame:CGRectMake(0,0,0,0)];
 lblValue.tag=2;
 lblValue.text = myString;
 [objInputButton addSubview:lblValue];

以下のように Action メソッドで文字列を取得します

  -(void)action:(UIButton*)btn
     {
     for(UILabel *lable in [btn subViews])
         {
              if([lable tag]==2)
                   {
                         //get your string from lable
                   }
         }
     }

編集:- この回答は、私がキャリアを始めたときに投稿されたものです。データを渡す方法が悪いため、私が投稿した他の回答に従うことをお勧めします。

于 2012-08-17T10:48:50.537 に答える
1

このドキュメントは、アクションがターゲットにポストされる方法を理解するための良い出発点です。

ターゲット セレクターが 3 つの異なるもののみであることがわかります。

- (IBAction)action;
- (IBAction)action:(id)sender;
- (IBAction)action:(id)sender forEvent:(UIEvent *)event;

あなたは単なるレシーバーであり、これらのメソッドを呼び出すわけではないため、他のタイプのパラメーターを受け取ることはできません。

呼び出されたときに文字列を「渡す」(つまり、受け取る) 必要がある理由はよくわかります。ユーザーの操作は、それらがいつ呼び出されるかを示し、これらのメソッドのいずれかを呼び出した時点で、ユーザーの要求に応答するのに十分なすべてのデータが必要です。単純なユーザー タップでは、受信する必要のある余分な文字列は作成されませんが、タッチ イベントに関する情報は取得されます。

MVC の仕組みについての優れたチュートリアルを見つけることを強くお勧めします。


ただし、 のプロパティをNSInteger介して単純な値を送信できます。作成時に の を設定でき、いずれかのメソッドが実行されたときにそれを読み取ることができます。tagUIButtonUIButtontagtag

于 2012-08-17T11:16:14.503 に答える
0

イベント (touchupinside) ディスパッチ時にボタンからタグ以外の情報を取得することが唯一の要件である場合は、UIButton をサブクラス化し、後で取得できるようにボタンで使用する情報を割り当てることができます。

おそらく、以下のように使用できます

-(void)action:(CustomButton*)btn{
      NSLog(@"%d %@", [btn tag], btn.value); // assuming CustomButton is a derived class of UIButton
}
于 2016-09-09T08:48:14.670 に答える
0

UIButton のタイプがカスタムの場合、テキストを含む画像を作成できます。次に、ボタンのtitleLabelプロパティをテキストに使用できます。

于 2012-08-17T10:21:29.420 に答える
0

次のようにする必要があります。

-(void)actionWithButton:(UIButton *)button andString:(NSString *)myString{
    //code
}

Objective-C の基本的な紹介を読むことをお勧めします ( Apple開発者ライブラリは非常に優れています! または、本が必要な場合は、 Stephen Kochan の本を強くお勧めします) 。

于 2012-08-17T10:18:52.437 に答える