2013-01-13 86 views
1

我有一个表格视图,其中我最初显示N个图像,并且随着用户向下滚动,当达到底部时,它会加载N个图像。现在,当用户触摸其中一个图像时,我使用模态渐变打开另一个视图,当用户返回时,表格保持在被触摸的单元格中(这是其中一个图像处于前N个加载图像中的情况)。但是当用户触摸任何随后加载的表格时,表格大小将恢复为原始大小(当加载前N个图像时)。UITableView更改内容大小

这只发生在表格大小上,而不是用于我使用的NSMutableArray表格的数据。我用下面的语句,甚至再出现这种情况:

// in viewDidLoad 

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


// whenever new images are loaded 

[self.flowTable reloadData]; 

当我试图检查正好出现这种情况这一点上,我发现,内容的大小没有改变,直到SEGUE被调用后。等到调用“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]; 

    } 


} 
+0

发布更多代码。 – occulus

+0

你使用什么数据结构?这有助于了解如何构建表视图的数据源。 –

+0

@Zaph,是的,我使用的NSMutableArray的数量没有变化。只有表视图的大小。 –

回答

5

我看不到任何不寻常的你在这里做。表视图的内容大小基于每个部分中的行数乘以每个单元的高度。只要这些数字是正确的,你就会得到正确的内容大小。

如果你真的想知道什么时候该内容大小的变化,您可以添加键值观察表视图的内容大小,使用类似:

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

然后,您可以断点observeValueForKeyPath:ofObject:change:context:,看看到底当变化发生时。

+0

嗯。我正在编程调用segue。并且ViewDidAppear方法在prepareforsegue方法之后被调用。甚至在观察者或viewdiddis显示方法被调用之前内容大小都会改变。 –

+0

KVO工作但我仍然无法看到发生变化的位置。 – frank

+0

在'observeValueForKeyPath ...'方法中添加一个断点,它可能会给你提示它发生的位置。 –