Objective c UIActivityIndicator从联机加载图像时查看?

Objective c UIActivityIndicator从联机加载图像时查看?,objective-c,xcode,ios4,uiimageview,uiimage,Objective C,Xcode,Ios4,Uiimageview,Uiimage,我有一个简单的脚本,它显示在互联网上的UIImageView中 有没有办法显示UIActivityIndicatorView或类似的东西,向用户显示它正在加载 以下是我的最低代码: NSString *imagePath = [NSString stringWithFormat:@"urlofimagehere.jpg"]; NSData *mydata = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:imagePath]

我有一个简单的脚本,它显示在互联网上的UIImageView中

有没有办法显示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];
谢谢! 库尔顿

编辑:删除代码

-[NSData initWithContentsOfURL:]
是一种同步方法。这意味着它将阻塞,直到数据通过网络加载。如果您希望能够保持UI的响应性,则需要使用异步方法。有关更多信息,请阅读以下内容:

我建议将NSURLRequest与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];
}

希望这有帮助

我试过了,但失败了。请看我更新的帖子!谢谢。可能有很多错误,在我发布之前我真的没有检查过。再次感谢!PS:这一行失败:
NSURLRequest*请求=[[[NSURLRequest alloc]initWithURL:imagePath]autorelease]。我道歉。initWithURL接受NSURL,而不是NSString。您需要使用-[NSURL initWithString:]参见上面修改的答案。