Iphone UITableView在模型数据更改后不重新加载数据(cellForRowAtIndexPath未激发)

Iphone UITableView在模型数据更改后不重新加载数据(cellForRowAtIndexPath未激发),iphone,objective-c,Iphone,Objective C,对于我目前正在使用的应用程序,我的一个主ViewController包含两个UITableView,其内容根据模型中存储的内容(SQL支持的核心数据)而有所不同。两个tableview都将它们的委托和数据源属性设置为它们都是其子视图的共享VC,我在VC中提供了响应tableview特定事件的必要方法 我发现,当我向数据库中添加新数据时,会导致TableView显示新行,并且我返回到VC并在VC的ViewWillDisplay方法中调用两个TableView上的reloadData,我看到numb

对于我目前正在使用的应用程序,我的一个主ViewController包含两个UITableView,其内容根据模型中存储的内容(SQL支持的核心数据)而有所不同。两个tableview都将它们的委托和数据源属性设置为它们都是其子视图的共享VC,我在VC中提供了响应tableview特定事件的必要方法

我发现,当我向数据库中添加新数据时,会导致TableView显示新行,并且我返回到VC并在VC的ViewWillDisplay方法中调用两个TableView上的reloadData,我看到numberOfRowsInSection根据CoreData中的新条目返回正确的行数,但是调用cellforrowatinexpath的次数不正确,就像它没有响应模型数据中的更改一样。例如,如果我有3行要显示,那么应用程序启动了,我在CoreData中添加了另一个条目,然后调用reloadData,numberOfRowsInSection正确返回4,但是cellForRowAtIndexPath仍然只调用了3次

除了我可能正在使用更合适的工具(如NSFetchedResultsController)将我的表视图链接到CoreData之外,还有什么原因导致cellForRowAtIndexPath没有被调用正确的次数,这是由numberOfRowsInSection返回的正确行数决定的


我想输入一些代码,但它实际上是标准的样板表格视图,我觉得我还缺少一些东西。

为了确保您理解正确,调用了
cellForRowAtIndexPath:
,其中包含屏幕上可以显示的单元格数量。如果您有4个单元格,但由于单元格的高度,用户只能使用3个单元格,则调用
cellForRowAtIndexPath:
3次

如果用户只能看到3个单元格,而不能看到更多,则只能调用3次单元格加载回调,即使您的表中有100行。

也要为cellForRowAtIndexPath和numberOfRowsInSection输入一些代码。。。这真的很有帮助。我的问题是UITableView被作为子视图添加到UIScrollView中,而该UIScrollView的大小没有被适当地调整以适合更大的表。我没有好好考虑这个问题,谢谢你的提醒。