2014-07-01 2 views
2

내가 전화 했어 이미지 변경해야 할 때마다 나는 이미지를 가지고 테이블보기에서 셀 (행)이 있습니다setImageWithURLRequest 성공로드되지만 동일한 이미지가 표시됩니다

-(void)loadThumbnailWithPath:(NSString *)path { 
    NSLog(@"loadThumbnailWithPath:%@",path); 
    UIImage* placeholder = [UIImage imageNamed:@"ic_courselist_placeholder.png"]; 

    if (path == nil || [path length] == 0) { 
     //default 
     [self.imageHeader setImage:placeholder]; 
     return; 
    } 

    //load 
    NSURL* url = [NSURL URLWithString:path]; 
    NSURLRequest* request = [NSURLRequest requestWithURL:url]; 
    __weak CSImageCell* weakComponent = self; 
    // 
    [self.imageHeader setImageWithURLRequest:request 
           placeholderImage:placeholder 
             success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image){ 
              // 
              NSLog(@"-OK-\nrequest=%@\nresponse=%@",request,response); 
              weakComponent.imageHeader.image = image; 
              [weakComponent setNeedsLayout]; 
              // 
             } 
             failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) { 
              // 
              //TODO: ERror logging 
              NSLog(@"Failed to load image:\nrequest=%@\nresponse=%@\nerror=%@",request,response,[error description]); 
              // 
             } 
    ]; 

} 

내가 할을 화면이로드되고 왼쪽/오른쪽으로 쓸어 넘기면 문제는 작동을 멈추고 이미지 (항상 위치 표시자가 아닌 이미지)를로드하며 동일한 이미지가 유지된다는 것입니다. 로그에는 새 이미지의 성공 및 URL이 표시되지만 동일하게 표시됩니다.

성공을위한 로그 또한 요청 및 응답에 대해 null을 반환합니다. 업데이트 : null은 항상 같은 이미지를 검색하는 후속 호출이 아니며 캐시에서 이미지를 가져 오는 경우 나타납니다. 여기

내가 (파일 위치) 사용하고 이미지에 대한 링크입니다 :

course0_image.jpg

course1_image.jpg

course2_image.jpg

course3_image.jpg

UPDATE를

이미지가 테이블의 행에있는 경우 테이블 레이아웃을 사용하여 큰 레이블로 내용의 크기를 조정하고 푸시 다운하는 기능을 추가했습니다. 따라서 첫 번째 행은 머리글 이미지이고, 그 다음에 제목과 날짜 등입니다. 항상 동일한 수의 셀을 가지며 각 셀은 한 번 나타납니다. 스 와이프에서 화면을 채우는 데 사용되는 데이터가 변경됩니다. 이 변경 (테이블 사용) 이전에는 모두 괜찮 았지만 더 긴 제목은 날짜와 겹치고있었습니다. 이 문제는 테이블 레이아웃으로 변경하기 전에는 없었습니다. 내가 UIImageView을 테이블 외부에 놓았을 때 다시 작동하기 시작하여 UITableView 또는 UITableViewCell과 관련이 있다고 가정합니다.

UPDATE 여기에 2

내가 직면하고있어 문제를 보여줍니다 sample project (zip)입니다.

UPDATE 3 문제는 다음 reloadRowsAtIndexPaths:withRowAnimation:를 호출하고 그 후 tableView:heightForRowAtIndexPath:가 실행이,이 호출이 주석되면 테이블보기에 요청 크기를 조정 트리거 사용자 정의 테이블 셀에 sizeToFit에 호출 것으로 보인다

이미지가 로딩 중입니다.

답변

1

UI와 관련된 내용을 수정하려면 기본 스레드로 돌아 가야합니다. 가끔 작동하는 이유

[self.imageHeader setImageWithURLRequest:request 
          placeholderImage:placeholder 
            success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image){ 
             // 
             dispatch_async(dispatch_get_main_queue(), ^{ 
              NSLog(@"-OK-\nrequest=%@\nresponse=%@",request,response); 
              weakComponent.imageHeader.image = image; 
              [weakComponent setNeedsLayout]; 
              // 
             }); 

            } 
            failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) { 
             // 
             //TODO: ERror logging 
             NSLog(@"Failed to load image:\nrequest=%@\nresponse=%@\nerror=%@",request,response,[error description]); 
             // 
            } 
    ]; 
+0

OK, 나는 그것을 시도하지만거야? :) –

+0

문제 –

+0

당신이 영상이 정확한지 확인해나요 아니, 그 나던 해결합니다? 그리고 어떤 일이 있는지 잠시 동안 머물러 있다면 어떨까요? –

관련 문제