2012-04-05 34 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沒有圖像屬性。你錯誤的imageView的UIControl

+0

謝謝,是的,當我試圖改變它時發現了。我不知道該怎麼做,但我仍然對Objective-C非常陌生。 – John 2012-04-05 00:57:40

+0

查看UIKit類文檔 – Otium 2012-04-05 01:02:43