1

最初にN個の画像を表示しているテーブルビューがあり、ユーザーが下にスクロールすると、下部に到達したときにさらにN個の画像が読み込まれます。ここで、ユーザーがこれらの画像の1つに触れると、モーダルセグエを使用して別のビューを開き、ユーザーが戻ると、テーブルは触れられたセルに残ります(これは、画像の1つが最初にロードされたN個の画像にある場合です)。ただし、ユーザーがその後に読み込まれる画像のいずれかに触れると、テーブルのサイズは元のサイズに戻ります(最初のN枚の画像が読み込まれたとき)。

これはテーブルサイズにのみ発生し、テーブルのデータに使用するNSMutableArrayには発生しません。私は次のステートメントを使用しましたが、それでもこれは起こります。

// in viewDidLoad

[self.flowTable setDataSource:self];
[self.flowTable setDelegate:self];


// whenever new images are loaded

[self.flowTable reloadData];

これがどの時点で発生するかを正確に確認しようとすると、セグエが呼び出されるまでコンテンツサイズが変更されないことがわかりました。そして、「viewDidAppear」メソッドが呼び出されるまでに、テーブルのコンテンツサイズが縮小されます。なぜこれが起こっているのか考えていますか?

編集

さて、私はインターネットから怠惰にロードします、そして私がより多くのデータをロードするときはいつでも、コードは次のようになります:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
   // connection finishes loading and the data is prepared to be updated

     NSDictionary *flowArr = [NSJSONSerialization JSONObjectWithData:receivedData options:0 error:nil];


    [self storeImageData: flowArr];

    [self.flowTable reloadData];


}


- (void) storeImageData:(NSMutableArray *)arr
{
     for(NSDictionary* data in arr)
    {

        // image data is stored as convenient and the NSMutableArray is updated as such

        [self.imageData addObject: det];

    }


} 
4

1 に答える 1

5

あなたがここで何をしているのか、私には何も見えません。テーブル ビューのコンテンツ サイズは、各セクションの行数に各セルの高さを掛けた値に基づいています。これらの数値が正しい限り、適切なコンテンツ サイズが得られます。

コンテンツ サイズがいつ変更されるかを正確に知りたい場合は、次のようなものを使用して、テーブル ビューのコンテンツ サイズにキー値の観察を追加できます。

[tableView addObserver:self forKeyPath:@"contentSize" options:0 context:NULL];

その後、ブレークポイントを設定observeValueForKeyPath:ofObject:change:context:して、変更がいつ発生したかを正確に確認できます。

于 2013-01-13T13:00:31.527 に答える