2011-07-26 8 views
0

내가테이블 뷰의 모든 셀에 이미지를 배치하는 방법은 무엇입니까? 스피

-(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; 
} 

처럼 모든있는 tableview 셀에 이미지 뷰를 배치하고 u는 어떤 행을 클릭 할 때 우리는 내가 didSelectROw 방법에 아래의 코드를 작성 우리의 아이폰 camera.For의 이미지를 얻을 하나 application.In 개발 . u는 첫 번째 행을 선택하고 이미지를 촬영, 도적질하지 말라,

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를 위임 방법을 사용하지만 내 문제는 이미지를 선택한 후 후, 해당 이미지는 마지막 셀에 표시 될 것입니다 그 이미지는 마지막 행에 나타날 것입니다. 제발 모든 행에 대한 이미지를 얻기위한 내 코드의 변경 내용을 알려주십시오.

+0

코드에 중단 점을 추가하여 간단하게 확인하십시오. 또는 스위치 케이스를 사용하고 행 1을 누른 다음이 이미지 디스플레이를 클릭하고 두 번째 행을 선택하면이 이미지가 표시되는 것과 같은 코드를 작성합니다. – ram

답변

0

다음 단계를 수행하여이 작업을 수행 할 수 있습니다. 1. 먼저 사용자가 셀을 클릭하면 행 번호 (indexPath.row)가 정수 변수에 저장됩니다. 2. 카메라에서 이미지를 가져온 다음에는 UIImage에 저장하십시오. 3. 이제는 업데이트 할 행을 알고 있고 didFinishPickingMediaWithInfo 대리자 메서드의 끝 부분에있는 UITableView의 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

내가 선택한 코드 행에 이미지를 할당 할 때 나는 코드를 사용했습니다.하지만 프로그램 수신 신호 : "EXC_BAD_ACCESS"오류가 발생했습니다. 어떻게 해결할 수 있습니까? this one –

+0

imageview 객체를 두 번 릴리스했는지 확인하십시오. 객체를 두 번 릴리스하면 이러한 종류의 충돌이 발생할 수 있습니다. – booleanBoy

0

문제는 itemimageview가 셀이 그려 질 때마다 delegate 메소드에서 얻은 tableview가 가장 최근의 셀 안의 이미지 뷰에 설정되어 있기 때문에 itemimageview에 tableview가 그린 마지막 이미지가 포함될 것입니다.

수정하려면 실제로 클릭 한 셀의 이미지 뷰를 업데이트해야합니다. 가장 쉬운 방법은 cell.image과 함께 Apple의 기본 셀 이미지 뷰를 사용하는 것입니다. 또는 UIImageView 추적하고 그리는 UITableViewCell 하위 클래스를 만들 수 있습니다. 그런 다음 선택한 셀에서 이미지를 변경합니다.

어느 쪽이든 그 클래스에서 선택된 셀을 추적해야합니다. 한 가지 방법은 UITableViewCell selectedCell;을 .h에 넣는 것입니다. didSelect 메서드에 selectedCell = [self cellForRowAtIndexPath:indexPath];을 입력하고 이미지 대리자에 selectedCell.image = image을 입력합니다.

죄송합니다. 따라하기가 어렵다면, 다소 복잡한 문제에 대한 간단한 대답입니다. 이 문제를 해결할 수있는 방법은 다양합니다.

+0

다음이 하나를 처리하는 방법 –

관련 문제