2013-03-20 167 views
0

嗨我有一個向按鈕添加圖像的問題。圖像存儲在一個NSMutableArray屬性。問題是添加並顯示圖像到按鈕。我已驗證圖像已添加到陣列中。我從照相機的圖像後,然後我選擇要使用它應用將用下面的錯誤崩潰:不能將圖像添加到按鈕

*終止應用程序由於未捕獲的異常「NSInvalidArgumentException」,原因:「 - [UIImage的長度]:無法識別的選擇發送到實例0x2090b5a

代碼:

displayArray=[[NSMutableArray alloc]initWithObjects:@"MedsTime_MedPic.png",@"",@"",@"", nil]; 

-(void)addImage1:(NSNotification*)notify 
{ 
    butImage=xapp.medicineImage; 
    [img setImage:xapp.medicineImage forState:UIControlStateNormal]; 
    [displayArray replaceObjectAtIndex:0 withObject:xapp.medicineImage ]; 
    [table reloadData]; 
} 



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier]; 

    } 
    else 
    { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier]; 
    } 

    if (indexPath.section==0) 
    { 
     img=[UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     img.frame=CGRectMake(25, 15, 75, 75); 
     img.layer.cornerRadius=6.0; 
     img.clipsToBounds=YES; 
     img.layer.borderColor=[[UIColor grayColor]CGColor]; 
     [cell.contentView addSubview:img]; 
     if (xapp.isEdited==YES) 
     { 

     } 
     else if (xapp.isEdited==NO) 
     { 
      [img setImage:[UIImage imageNamed:[displayArray objectAtIndex:0]] forState:UIControlStateNormal]; 

     } 

     [cell.contentView addSubview:img]; 

     img.titleLabel.textColor=[UIColor blackColor]; 
     text=[[UITextField alloc]initWithFrame:CGRectMake(105, 30, 200, 30)]; 
     text.delegate=self; 
     [email protected]"Enter Medicine First"; 

     if (xapp.isEdited==YES) 
     { 
      text.text=[[editArray objectAtIndex:0]valueForKey:@"medicineName"]; 
     } 
     else{ 

      text.text=[displayArray objectAtIndex:1]; 
     } 


     [text setBorderStyle:UITextBorderStyleRoundedRect]; 
     [cell addSubview:text]; 
     [cell addSubview:img]; 


    } 
} 
+0

爲什麼要向單元格和contentView添加'img'對象?另外,你爲什麼要將img添加到contentView兩次? – Petar 2013-03-20 12:50:48

+1

添加什麼它完全崩潰? – Pfitz 2013-03-20 12:55:49

+1

你也可以在didSelectRowForIndexPath中發佈代碼嗎? (我想這是發生崩潰的地方) – Petar 2013-03-20 12:57:18

回答

0

替換你的code.Add一個新的數組,然後check.Hope它對你有用。

if (xapp.isEdited==YES) 
     { 
      CamImage*eventImage = (CamImage*)[editArray objectAtIndex:0]; 
      [img setImage:[eventImage valueForKey:@"medicineImage"] forState:UIControlStateNormal]; 
      } 

     else if (xapp.isEdited==NO) 
      NSLog(@"editedmo"); 
     { 
      if(Medimage==NO){ 
       UIImage *i=(UIImage*)[displayArray objectAtIndex:0]; 
       [img setImage:i forState:UIControlStateNormal]; 
      [img setImage:[UIImage imageNamed:[displayArray objectAtIndex:0]] forState:UIControlStateNormal]; 
       } 
0

你應該知道你不能添加圖片到UIButtonTypeRoundedRect,你應該將其更改爲自定義按鈕。

而在此功能,您用圖像替換顯示陣列的第一個項目,而在顯示陣列其他項目NSString的這似乎是問題的根源:

-(void)addImage1:(NSNotification*)notify 
{ 
    butImage=xapp.medicineImage; 
    [img setImage:xapp.medicineImage forState:UIControlStateNormal]; 
    [displayArray replaceObjectAtIndex:0 withObject:xapp.medicineImage ]; 
    [table reloadData]; 
} 
從一些地方

除了我不明白你的代碼。有一些明顯的錯誤:

這部分與uitableview慣例衝突,你可以刪除它沒有得到錯誤。

else 
{ 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier]; 
} 

您將'img'添加到contentView兩次,一次就夠了。

0

您(或在SDK一些方法)所要求的圖像執行該方法length

reason: '-[UIImage length]: unrecognized selector sent to instance 0x2090b5a

UIImage不具有方法的長度。根據文件,這是一種NSString和/或UIAElementArray的方法。

我的猜測是你正在使用的圖像,其中NSStringUIAElementArray預計。