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 に答える