1

我正在尝试创建一个UIPickerViewinside UITableViewCell,它工作正常。我已将标签设置为UIProgressViewas indexPath.row。目前我有 3 行我在使用UIProgressView下载文件时使用它NSURLConnection

NSURLConnection调用该connection:didReceiveData:方法时,我尝试通过匹配来更新进度indexPath.row,但是,我不确定为什么最后一行只被更新

请告诉我

- (void)download:(NSString*)rowId
{
    NSURL *url;

    if ([rowId intValue] == 0 ){
        url = [NSURL URLWithString:@"http://192.168.0.29/iphone/video/video_10.mov"];
    }
    else if ([rowId intValue]  == 1){
        url = [NSURL URLWithString:@"http://192.168.0.29/iphone/video/video_10.mov"];
    }
    else if ([rowId intValue]  == 2){
        url = [NSURL URLWithString:@"http://192.168.0.29/iphone/video/video_10.mov"];
    }



    NSURLRequest *theRequest = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:10.0];
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
    connection = nil;

}
- (void)connection:(NSURLConnection *)theConnection didReceiveData:(NSData *)recievedData {
    if (data==nil) {
        data = [[NSMutableData alloc] initWithCapacity:2048];
    }
    [data appendData:recievedData];
    NSNumber *resourceLength = [NSNumber numberWithUnsignedInteger:[data length]];
    float progress = [resourceLength floatValue] / [self.filesize floatValue];
    NSLog(@"%d inside ",myId);
    UIProgressView* downPreView = (UIProgressView*)[self.view viewWithTag:myId];
    downPreView.progress = progress;

 }


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:
(NSIndexPath *)indexPath
//-------------------------------------------------------------------------------
{
    static NSString *CellIdentifier = @"DownloadingCell";

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

    self.progressView = [[[UIProgressView alloc]initWithFrame:CGRectMake(80,70,170,15)]autorelease];
    [self.progressView setProgressViewStyle:UIProgressViewStyleBar];
    self.progressView.tag = indexPath.row;
    self.progressView.progress = 0.0f;
    myId = indexPath.row;
    NSString *aid = [NSString stringWithFormat:@"%d",myId];

    NSLog(@"%@",aid);






    [cell.contentView addSubview:self.progressView];
    [self performSelectorOnMainThread:@selector(download:) withObject:aid waitUntilDone:NO];


    if (indexPath.row == 0)
    {
        cell.textLabel.text = @"Beautiful Dreamer";
        cell.detailTextLabel.text = @"David Lehman";
        cell.imageView.image = [UIImage imageNamed:@"download_poem_icon.png"];

    }
    else if (indexPath.row == 1)
    {
        cell.textLabel.text = @"Friends a Friendship";
        cell.detailTextLabel.text = @"Denise Levertov";

        cell.imageView.image = [UIImage imageNamed:@"download_poem_icon.png"];

    }
    else {
        cell.textLabel.text = @"Love and Friendship";
        cell.detailTextLabel.text = @"Dorianne Laux";
        cell.imageView.image = [UIImage imageNamed:@"download_poem_icon.png"];

    }

    cell.selectionStyle = UITableViewCellSelectionStyleNone;

    return cell;
}
4

1 回答 1

2

尝试创建如下自定义类:

@protocol CustomConnectionDelegate

- (void)connection:(CustomConnection *)theConnection didReceiveData:(NSData *)recievedData;

@end
@interface CustomConnection:NSURLConnection
{
    int myId;
    id<CustomConnectionDelegate>myDelegate;
}
@property(nonatomic, readwrite) int myId;
@property(nonatomic, retain) id<CustomConnectionDelegate>myDelegate;

.

@implementation CustomConnection
@synthesize myDelegate, myId;

- (id)initWithRequest:(NSURLRequest *)request delegate:(id)delegate WithRowId:(int)rowId
{
    self.myDelegate = delegate;
    myId = rowId;
}
- (void)connection:(NSURLConnection *)theConnection didReceiveData:(NSData *)recievedData{
    [self.delegate connection:self didReceiveData:recievedData];
}
于 2012-03-03T12:06:35.127 回答