1

ダウンロードしたオブジェクトとダウンロード中のオブジェクトを含むテーブルビューがあります。ここで、ダウンロードセルは2つのラベル、1つのUIProgressViewと1つのUIButtonでカスタムされています。

私の NSURLConnection デリゲートは、オブジェクトのダウンロード中に進行状況を更新し続けます。ただし、セルのリロード中は、セル内の UIButton を押すのが非常に難しく、応答が得られるように非常に速く押し続ける必要があります。私が見つけた問題は、デリゲートがセルを頻繁に更新することです (約 0.002 秒)。そのため、その後更新するたびに頻度を 0.1 秒に設定しましたが、UIButton はまだ非常に押しにくく、設定できませんUIProgressview の更新が連続しなくなるため、間隔が長すぎます。

デリゲートのコードは次のとおりです。

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{
 if(startTime == nil) startTime = [NSDate date];
    NSDate *currentTime = [NSDate date];
    NSTimeInterval timeInterval = [currentTime timeIntervalSinceDate:startTime];

    bytesReceived = [receivedData length];

    if (timeInterval >=0.1) {
        startTime = currentTime;

        double percent = bytesReceived/expectedBytes;
        WVSecondViewController *downloadsController = [[WVSecondViewController alloc] initWithNibName:nil bundle:nil];
        int index = [downloadsController.name0 indexOfObject:resourceName];
        [downloadsController.progress0 replaceObjectAtIndex:index withObject:[NSNumber numberWithFloat:percent]];

        NSIndexPath *indexP = [NSIndexPath indexPathForRow:index inSection:0];
        [downloadsController.downloadsTableview reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexP] withRowAnimation:UITableViewRowAnimationNone]; 
    }
  }

downloadsController.progress0 は、進行状況ビューを更新するために使用されるテーブルビューのデータソースです。

コードの最後の行を削除すると

[downloadsController.downloadsTableview reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexP] withRowAnimation:UITableViewRowAnimationNone];

その後、UIButton を通常どおり押すことができます。

どうすれば問題を解決できますか?いつも助けてくれてありがとう。

4

0 に答える 0