0

私は1つのアプリケーションを開発しています.9つのUIImageViewを別のUIImageViewに表示する必要があるという点で.そして、任意の画像をクリックすると、選択したUIImageViewを識別し、選択したUIImageViewの画像を変更します.次回も同じことをする必要がありますが、以前に選択した画像を新しい変更された画像で表示する必要があります。そのために、次のようなコードを書きました

for (int h=0; h<8; h++) 
      {
          int x=[[questions.marker_left objectAtIndex:h] intValue];
          int y=[[questions.marker_top objectAtIndex:h] intValue];
          img3=[[UIImageView alloc]initWithFrame:CGRectMake(x,y, 30, 30)];
          img3.userInteractionEnabled=YES;
          img1.userInteractionEnabled=YES;
          img3.tag=h;
          //img2.backgroundColor=[UIColor greenColor];
          img3.image=[UIImage imageNamed:@"PINpurple.png"];
          tap5=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(calculate:)];
          tap5.delegate=self;
          [img3 addGestureRecognizer:tap5];
          [img1 addSubview:img3];

      }

  -(void)calculate:(UITapGestureRecognizer*)recognizer
   {
      NSInteger i=(recognizer).view.tag;
     NSString *str=[questions.result objectAtIndex:i];
      NSLog(@"%@",str);
     if([str isEqualToString:@"true"])
        {
          img3.image=[UIImage imageNamed:@"PINgreen.png"];
        }
     else
        {
          img3.image=[UIImage imageNamed:@"PINred.png"];
          }
   }

選択した画像は変更されますが、前の UIImageView は次の UIImageView を選択した後に古い画像を取得します。

4

1 に答える 1

0
    //Edit In calculate function
    -(void)calculate:(UITapGestureRecognizer*)recognizer
    {
      NSInteger i=(recognizer).view.tag;

      //Detect selected UIImageView
      UIImageView *selectedImageView=(UIImageView*)recognizer.view;

      NSString *str=[questions.result objectAtIndex:i];

      NSLog(@"%@",str);

     if([str isEqualToString:@"true"])
        {
          selectedImageView.image=[UIImage imageNamed:@"PINgreen.png"];
        }
     else
        {
          selectedImageView.image=[UIImage imageNamed:@"PINred.png"];
        }
    }
于 2012-04-05T10:09:42.350 に答える