2012-04-05 10 views
0

私は9個のUIImageViewsを表示するアプリケーションを持っていますが、ユーザーがそれらを削除する機能を追加しようとしています。そこで、私はそれをすべて設定し、ユーザーがタップした画像を削除したいことを確認するためのアラートビューを設定します。アラートビューで[はい]をクリックすると、アプリケーションがクラッシュし、デバッガで次のように表示されます。UIControlとsetImageの問題

2012-04-04 18:19:44.311 AppName [1857:f803] - [UIControl setImage:]:インスタンスに送信された認識できないセレクタ0x6aac690

2012-04-04 18:19:44.312のAppName [1857:F803]によりキャッチされない例外にアプリを終了 'NSInvalidArgumentException'、理由: ' - [UicontrolのsetImageは:]:未認識セレクタインスタンス0x6aac690に送ら'

奇妙な部分は、私のコードの中でsetImageを呼び出さないということです。これは、私が働いているコードです:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo { 
    if (imageView.image == nil) { 
     imageView.image = img; 

     self.array = [NSMutableArray arrayWithObject:[NSData dataWithData:UIImagePNGRepresentation(imageView.image)]]; 

     [picker dismissModalViewControllerAnimated:YES]; 
     [self.popover dismissPopoverAnimated:YES]; 
     return; 

    } 

    if (imageView2.image == nil) { 
     imageView2.image = img; 
     NSLog(@"The image is a %@", imageView); 
     [self.array addObject:[NSData dataWithData:UIImagePNGRepresentation(imageView2.image)]]; 

     [picker dismissModalViewControllerAnimated:YES]; 
     [self.popover dismissPopoverAnimated:YES]; 
     return; 
    } 

    } 

.....

- (IBAction)deleteButtonPressed:(id)sender { 
     NSLog(@"Sender is %@", sender); 
     UIAlertView *deleteAlertView = [[UIAlertView alloc] initWithTitle:@"Delete" 
                    message:@"Are you sure you want to delete this photo?" 
                   delegate:self 
                 cancelButtonTitle:@"No" 
                 otherButtonTitles:@"Yes", nil]; 
     [deleteAlertView show]; 
     int imageIndex = ((UIButton *)sender).tag; 
     deleteAlertView.tag = imageIndex; 

    } 

    - (void)alertView: (UIAlertView *) alertView 
    clickedButtonAtIndex: (NSInteger) buttonIndex 
    { 


     if (buttonIndex != [alertView cancelButtonIndex]) { 
      NSLog(@"User Clicked Yes. Deleting index %d of %d", alertView.tag, [array count]); 
      NSLog(@"The tag is %i", alertView.tag); 
      [self.array removeObjectAtIndex: alertView.tag]; 
      NSLog(@"After deleting item, array count = %d", [array count]); 
     NSLog(@"Returned view is :%@, in view: %@", [self.view viewWithTag:alertView.tag], self.view); 
      ((UIImageView *)[self.view viewWithTag:alertView.tag]).image =nil; 
     } 

     [self.user setObject:self.array forKey:@"images"]; 
    } 

私はブレークポイントを追加し、クラッシュを引き起こしている行があると表示されます。

((UIImageView *)[self.view viewWithTag:alertView.tag]).image =nil; この行の目的は、UIからイメージを削除することです。私はその行がなぜこのエラーの原因になっているのか分かりませんが、コードは正しいようです。問題のnibファイルはUIControlだけではなく、UIViewなので、問題になる可能性があります。どんな助けや助言も大変ありがとうございます。

答えて

0

私のタグが乱れていたことがわかります。私は実際のUIImageViewではないことを忘れて、UIImageView上の不可視ボタンにタグを付けました。それはすべての奇妙さを説明します。私はUIButtonsに従って実際のUIImageViewsをタグ付けしました。そして今はうまくいきます。皆さん、お世話になりました。

-1

UIControlにはimageプロパティがありません。あなたはUIControlのimageViewを誤解しています

+0

ありがとう、私はそれを変更しようとしたときにそれを発見しました。代わりに何を入れるべきか分かりませんが、私はまだObjective-Cの新機能です。 – John

+0

UIKitクラスのドキュメントを参照してください – Otium

関連する問題