帮助我使用NSOperationQueue在表格视图上加载图像

时间:2011-02-22 07:04:48

标签: iphone iphone-sdk-3.0

请查看以下代码..来自网络

- (void) loadData {

        NSOperationQueue *queue = [NSOperationQueue new];

        NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self 
                                                                                    selector:@selector(loadDataWithOperation)  object:nil];

        [queue addOperation:operation];

        [operation release];
     }


        - (void) loadDataWithOperation {

        NSURL *dataURL = [NSURL URLWithString:@"http://icodeblog.com/samples/nsoperation/data.plist"];

        NSArray *tmp_array = [NSArray arrayWithContentsOfURL:dataURL];

        for(NSString *str in tmp_array) {
        [self.array addObject:str];
        }

        [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];
    }


    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

            static NSString *CellIdentifier = @"Cell";

            UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
            if (cell == nil) {
                cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
            }

            [cell.textLabel setText:[self.array objectAtIndex:indexPath.row]];

            return cell;
        }

我发现上面的代码从网上加载文本没有任何问题。(我的意思是gui不挂)。就像我明智地想要将图像加载到表视图中一样。因为我已经使用了以下代码。

- (void) loadDataWithOperation {

    NSString *Img_id, *Img_name, *DynamicImgUrl;

    Img_id = xmltag.equip_id;

    Img_name = xmltag.image;

    DynamicImgUrl = [NSString stringWithFormat:@"http://test.com/pics/equipment/%@/%@",Img_id, Img_name];

    NSURL *ImageUrl = [NSURL URLWithString:DynamicImgUrl];

    //UIImage *image = [UIImage imageWithData: [NSData dataWithContentsOfURL:ImageUrl]];

    NSArray *tmp_array = [NSArray arrayWithContentsOfURL:ImageUrl];

    for(NSString *str in tmp_array) {
        [self.array addObject:str];
    }

    [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];
}

我在这里纠正吗?如何添加到表视图中...

请帮助我...

1 个答案:

答案 0 :(得分:0)

你正在寻求从URL上显示Tableview上的图像,当你从url下载图像我们需要考虑一些问题时,如果你用普通的加载图像进行goahead,它会冻结你的表视图。    我建议你看看LazyLoading图像

你看到这个链接http://developer.apple.com/library/ios/#samplecode/LazyTableImages/Introduction/Intro.html

下载此示例并了解相关内容