2011-07-26 1 views
0

私はどのようにtableviewのすべてのセルの画像を配置するには? IAM

-(UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

      static NSString *CellIdentifier = @"Cell"; 
      UITableViewCell *cell = [tableView 
        dequeueReusableCellWithIdentifier:CellIdentifier]; 

    itemimageview=[[UIImageView alloc]initWithFrame:CGRectMake(5, 8, 75, 70)]; 
    itemimageview.image=[UIImage imageNamed:@"thumb_mdpi.png"]; 
    itemimageview.userInteractionEnabled = YES; 
    [cell.contentView addSubview:itemimageview]; 
    return cell; 
} 

のように、すべてのテーブルビューセルでImageViewのを置き、uは任意の行をクリックしたときに、私たちは、私がdidSelectROwメソッドで以下のコードを記述し、当社のiPhone camera.Forから画像を取得する1 application.Inを開発。

UIImagePickerController *imagePicker = [[[UIImagePickerController alloc] init] 
                    autorelease]; 
imagePicker.sourceType=UIImagePickerControllerSourceTypeCamera; 
//imagePicker.allowsImageEditing = NO; 
imagePicker.delegate = self; 
[self presentModalViewController:imagePicker animated:YES]; 

私は

- (void)imagePickerController:(UIImagePickerController *)picker 
didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage]; 

    NSLog(@"image selected"); 
    itemimageview.image =image; 
    [self dismissModalViewControllerAnimated:YES]; 
} 

ようUIIMagePickerControllerデリゲートメソッドを使用しますが、私の問題は、画像を選択した後であるuは最初の行を選択し、画像を撮るonly.If、そのイメージは、最後のセルに表示されます後その画像は最後の行に表示されます。私のコードで、各行に画像を取得するための変更点は何ですか?

+0

コードにブレークポイントを追加するだけで簡単にチェックできます。または、スイッチケースを使用し、行1をクリックしてからこの画像表示をクリックすると、2行目がこの画像を表示するときのようにコードを書いてください。 – ram

答えて

0

これを実現するには、次の手順を実行します。 1.最初にユーザーがセルをクリックすると、行番号(indexPath.row)が整数変数に格納されます。 2.カメラから画像を取得したら、UIImageに保存します。 3.更新する行がわかっていて、didFinishPickingMediaWithInfoデリゲートメソッドの最後にUITableViewのur image.Call reloadDataメソッドがあります。 4. reloadDataメソッドは、その後、cellForRowAtIndexPathメソッドを呼び出します。 clickedRowはdidSelectRowAtIndexPath方法でユーザがクリックした行番号を保持する整数変数である

if(indexPath.row==clickedRow){ 
    //Create the imageView here and then assign the image obtained from the camera to it. 
    imageView.image=cameraImage; 
    [cell.contentView addSubView:imageView]; 

}:その中で、このような状態を有します。

これが役に立ちます。

+0

申し訳ありません4コードのフォーマットが正しくありません – booleanBoy

+0

私は、選択された行に画像を割り当てるときに私はur code.Butを使用しました。プログラム受信信号のようなエラーが出ました: "EXC_BAD_ACCESS"。解決方法this one –

+0

imageviewオブジェクトを2回リリースするかどうかを確認します。オブジェクトを2回リリースすると、クラッシュすることがあります。 – booleanBoy

0

問題は、セルが描画されるたびに、delegateメソッドから取得したtableviewが最新のセル内のイメージビューに設定されているため、itemimageviewにtableviewが最後に描画したイメージが含まれることです。

これを修正するには、実際にクリックされたセルの画像ビューを更新する必要があります。私はこれを行う最も簡単な方法は、cell.imageとAppleのデフォルトのセルイメージビューを使用することだと思う。または、UIImageViewを追跡して描画するUITableViewCellのサブクラスを作成することもできます。次に、選択したセルの画像を変更します。

いずれの方法でも、そのクラスでどのセルが選択されたかを把握する必要があります。 1つの方法は、UITableViewCell selectedCell;を.hに入れることです。 didSelectメソッドにselectedCell = [self cellForRowAtIndexPath:indexPath];、その後にイメージ代理人にselectedCell.image = imageが続きます。

申し訳ありませんが、これは難しい場合は、中程度に複雑な問題に対する簡単な答えです。これに取り組む方法はたくさんあります。

+0

これを処理する方法 –

関連する問題