2012-09-11 1 views
0

사용자 정의 tableviewcell 내에서 이미지를 설정하고 heightForRowAtIndexPath 메소드 내에서 반환 된 이미지의 높이를 사용하려고합니다.AFNetworking setImageWithURL - 반환되는 이미지의 높이를 얻으시겠습니까?

반환 된 데이터를 heightForRowAtIndexPath 메소드로 가져 오는 방법이 있습니까? 현재 내가 로컬 사전을 사용하여 아래 당을 설정 해요 :보다 효율적인 접근 방식에

NSURLRequest* urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:recent.show.showImage] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:30]; 


    [cell.imageView setImageWithURLRequest:urlRequest placeholderImage:[UIImage imageNamed:@"icon"] success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { 

     NSNumber *imageHeight = [[NSNumber alloc] initWithFloat:image.size.height]; 
     NSString *indexString = [NSString stringWithFormat:@"%d", indexPath.row]; 
     [self.returnedImages setValue:imageHeight forKey:indexString]; 
     [imageHeight release]; 

    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) { 

    }]; 

모든 포인터는 크게 감사합니다.

건배 닉

+0

현재 구성표가 작동하지 않습니까? 흥미로운 질문은 (나는 답을 모른다)'tableView : cellForRowAtIndexPath :'가'tableView : heightForRowAtIndexPath :'앞이나 뒤에 호출되는지 여부이다. 즉, 높이가 요청되었을 때 사전 항목을 사용할 수 있습니까? – FluffulousChimp

+0

이러한 메서드가 호출되는 순서를 보장 할 수 있는지 확신하지 못합니다. 비동기적일 수도 있습니다. – TimD

+0

감사합니다. 현재 인덱스와 인덱스의 두 셀에서 모두 set image를 호출하고 있습니다. 괜찮아 보입니다. 어느 것이 먼저 불려지 든간에 후속 호출에서는 캐시가 사용되는 것처럼 중요하지 않습니다. –

답변

1

당신이 현재있는 NSDictionary에서이하고있는 방법은 적절하다. 가능한 한 빨리 업데이트되도록하기 위해 성공 블록에 [self.tableView reloadData]을 추가 할 수 있습니다. 이후 업데이트 된 데이터로 테이블 뷰를 즉시 새로 고칩니다. 심지어 더 나은 당신은 reloadRowsAtIndexPaths:withRowAnimation:을 사용하고 새로 다운로드 한 UIImage의 색인 경로를 전달하여 전체 tableview를 새로 고치지 않을 수 있습니다.

Docs

관련 문제