最初に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];
}
}