0

ページがありUIScrollViewます。これUIscrollViewについては、ボタン内にさまざまな画像があり、以下のコードで確認できます。ボタンを押したときにこの画像をロードしたいのですUIWebViewが、どのボタンがクリックされているかをどのように知ることができますか。これを実装するためのヒントを教えてください。

私はObjective-Cが初めてです

ここに私のアクションがあります:私は各画像に対して1つのアクションを持ちたいのですが、今はすべての画像に対して1つのアクションしかありません。

 - (IBAction)openAction:(id)sender {

  NSLog(@"test");
 }
4

4 に答える 4

1

実際のボタンは IBAction に渡されます。ボタンにタグを設定することは、それを行う 1 つの方法です。Interface Builder ですべてのボタンのアウトレットを作成した場合は、次のように簡単に実行できます。

- (IBAction)openAction:(id)sender {
    UIButton *b = (UIButton *)sender;

    if ([b isEqual:self.outletButton1]) {
        // Do something with button 1
    }
    else if ([b isEqual:self.outletButton2]) {
        // Do something with button 2
    }
}
于 2012-10-09T13:20:45.217 に答える
1

コードまたは Interface Builder で、各ボタンに一意のタグを付けます。

次に、アクションで次のことができます。

- (IBAction)openAction:(id)sender {
   UIButton *b = (UIButton *)sender;
   NSLog(@"button %d is pressed", b.tag);
}

すでに imageviews タグを付けているようです。それらはボタンではありません!代わりに、コンテンツが画像の UIButton を作成する必要があります。UIButton の setImage:forState: を参照してください。

編集:以下の質問への回答として、以下に例を示します。

NSMutableArray *bArray = [NSMutableArray arrayWithCapacity:kNumImages];
NSUInteger i;
for (i = 1; i <= kNumImages; i++)
{
    NSString *imageName = [NSString stringWithFormat:@"image%d.jpg", i];
    UIButton *btn = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
    btn setImage:imageName forState:UIControlStateNormal];
    btn.tag = 100+i;
    [bArray addObject:btn];
}
于 2012-10-09T13:15:07.233 に答える
1

ボタンに同じタグを使用しないでください。別のボタンには別のタグを使用します。例 [btn setTag:1] 。[btn setTag:i]; を使用できます。動的値

于 2012-10-09T13:16:25.350 に答える
0

UIImageView に UIButton を追加する必要はありません。代わりに、このように UIButton の画像を設定できます。

    [btn setImage:[UIImage imageNamed:@"image1"] forState:UIControlStateNormal];

次のようにアクションで画像にアクセスできます。

- (IBAction)openAction:(id)sender {
  if([[btn currentImage] isEqual:[UIImage imageNamed:@"image1"]]){

  }
  NSLog(@"test");
 }
于 2012-10-09T14:56:39.183 に答える