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;
        text.placeholder=@"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];


    }
}
4

3 に答える 3

0

コードを置き換えます。新しい配列を1つ追加してから、確認します。お役に立てば幸いです。

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];
                 }
于 2013-03-21T02:29:08.977 に答える
0

画像を追加できないことを知っておく必要がありUIButtonTypeRoundedRectます。カスタムボタンに変更する必要があります。

この関数では、display arrayの最初の項目を画像に置き換えますが、display arrayの他の項目はnsstringsであり、これが問題の原因のようです。

-(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に2回追加します。1回で十分です。

于 2013-03-20T12:58:07.753 に答える
0

あなた(またはSDKのいくつかのメソッド)は、イメージにメソッドを実行するように求めていますlength

理由: ' -[UIImage の長さ] : 認識されないセレクターがインスタンス 0x2090b5a に送信されました

AnUIImageにはメソッドの長さがありません。ドキュメントによると、これはNSStringand/orのメソッドですUIAElementArray

私の推測では、NSStringまたはUIAElementArrayが期待される場所で画像を使用しています。

于 2013-03-20T12:59:28.900 に答える