2011-03-10 3 views
1

인터넷에서 UIImageView에 표시되는 간단한 스크립트가 있습니다.UIActivityIndicator 온라인에서 이미지를로드 할 때보기?

사용자에게 표시되는 UIActivityIndicatorView 또는 그 종류의 무언가를 표시하는 방법이 있습니까?

NSString *imagePath = [NSString stringWithFormat:@"urlofimagehere.jpg"]; 
NSData *mydata = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:imagePath]]; 
UIImage *myimage = [[UIImage alloc] initWithData:mydata]; 
[imageView setImage:myimage]; 
[myimage release]; 

감사 :

여기 내 최소한의 코드입니다! Coulton

EDIT : CODE는

답변

3
-[NSData initWithContentsOfURL:] 

동기식 방법으로 제거 하였다. 즉, 데이터가 네트워크를 통해로드 될 때까지 차단됩니다. UI 응답 성을 유지하려면 비동기 방식을 사용해야합니다. 자세한 내용은 다음을 참조하십시오. http://akosma.com/2010/05/28/initwithcontentsofurl-methods-considered-harmful/

NSURLRequestDelegate와 함께 NSURLRequestDelegate를 사용하여 데이터로드가 완료되면 콜백을 수신하는 것이 좋습니다. 다음은 그 예입니다.

- (void)loadImageAtURL(NSString *)urlString { 
    [myUIActivityIndicatorView startAnimating]; 

    // SHOW NETWORK INDICATOR 
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; 

    // SET UP THE REQUEST 
    NSURL *url = [[NSURL alloc] initWithString:urlString]; 
    NSURLRequest *request = [[[NSURLRequest alloc] initWithURL:url] autorelease]; 

    // SET UP THE CONNECTION 
    connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
    mutData = [[[NSMutableData alloc] init] retain]; 
} 

- (void)connection:(NSURLConnection *)connection 
    didFailWithError:(NSError *)error { 
    // Handle error 
} 

- (void)connection:(NSURLConnection *)connection 
    didReceiveData:(NSData *)data { 
    [mutData appendData:data]; 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)aConnection { 

    // ONCE LOADED HIDE NETWORK INDICATOR 
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 

    // RELEASE THE CONNECTION 
    [connection release]; 

    // CREATE NEW UIIMAGE FROM THE DATA 
    image = [[[UIImage alloc] initWithData:mutData] retain]; 
    [mutData release]; 

    // HIDE THE ACTIVITY INDICATOR 
    // Make sure hidesWhenStopped is set to YES on the activity indicator. 
    [myUIActivityIndicatorView stopAnimating]; 
    [myUIImageView setImage:image]; 
    [image release]; 
} 

희망이 있습니다.

+0

시도한 결과 실패했습니다. 내 업데이트 된 게시물을 참조하십시오! 감사. – iosfreak

+0

많은 오류가있을 확률이 높습니다. 실제로 게시하기 전에 검토하지 않았습니다. 다시 한 번 감사드립니다! 추신 : 그것은이 줄에서 실패했습니다 :'NSURLRequest * request = [[NSURLRequest alloc] initWithURL : imagePath] autorelease];'. – iosfreak

+0

사과드립니다. initWithURL은 NSString이 아닌 NSURL을 사용합니다. - [NSURL initWithString :] 수정 된 답변을 참조하십시오. –

관련 문제