0

我有一个应用程序,我从相机捕获图像并将其设置为按钮。

因此,在从相机捕获图像并点击使用按钮后,我的应用程序因 [NSCFType setImage:forstate] 无法识别的实例而崩溃

 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
   [picker dismissModalViewControllerAnimated:YES];

   UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    UIImage *resizeImage = [image imageWithImage:image scaledToSize:CGSizeMake(320, 480)];    

   //convert the selected image to NSData
   toShowFullImage = UIImageJPEGRepresentation(resizeImage, 0.8);

    //retain it for further use 
    [toShowFullImage retain];

    //set the selected image to button

    UIImage *newimage=[image imageScaleAndCropToMaxSize:CGSizeMake(75, 75)];

    [button setImage:newimage forState:UIControlStateNormal];
}

此崩溃发生在 iOS 6.0.1 中,出现 Abort trap 6 错误

4

2 回答 2

0

我认为问题在于当您设置按钮的背景图像时,它已经发布。

此问题的可能方式:

  1. 当您将按钮添加到视图时,您调用了[button release];
  2. 您使用工厂方法创建了按钮,例如buttonWithType:

可能的解决方案:

  1. 设置为查看后不要调用release。
  2. 如果您使用创建按钮,只需保留按钮buttonWithType:
  3. 使用标签设置图像。

添加按钮时,请设置如下标签:

button.tag = 7;
[self.view addSubview:button];

并将图像设置为:

 [[self.view viewWithTag:7] setImage:newimage forState:UIControlStateNormal];
于 2012-11-22T08:28:34.123 回答
0

只需检查您是否分配了按钮,并在将图像设置在您释放此按钮的任何位置之前,还是否提供了插座参考,然后发生此类错误,因此请检查此流程伙伴..并查看此代码可能也很容易给你用。。

而不是 newimage.. 直接将图像设置为按钮的背景,例如..

[button setBackgroundImage:image forState:UIControlStateNormal];
于 2012-11-22T07:20:46.700 回答