如何使用tableView的reloadData方法iphone

问题描述:

我有一个UITableViewController类。我正在使用NSMutableArray填充表格单元格。我正在从数据库&中获取数据,并将其添加到数组中。但细胞正在显示旧的结果。我如何使用reladData方法&我应该在哪里调用我的UITableViewController中的这个方法?如何使用tableView的reloadData方法iphone

我引述苹果的文档时不使用它:

表视图的委托或数据源 当它想 表视图完全重装 其数据调用此方法。不应在 中调用插入或删除 行的方法,尤其是在调用 beginUpdates和endUpdates时实现的动画 中。

这么叫吧,当你改变了你的模型,但没有使用实现代码如下方法来改变如表:

deleteRowsAtIndexPaths:withRowAnimation: 
deleteSections:withRowAnimation: 
insertRowsAtIndexPaths:withRowAnimation: 
insertSections:withRowAnimation: 

每当你调用reloadData方法,表视图将被刷新。当你想在从数据库加载数据后刷新表格时,可以在完成抓取时调用重新加载数据。

 
// code to fetch data from database 

// when done, reload the table 
[myTableView reloadData]; 
+0

刷新你的表格单元格,还看尼克韦弗的回答为其他有价值的信息。 – taskinoor 2011-04-08 18:14:35

你可以(也应该)调用reloadData:时要强制表重新加载或当你知道它没有被抽呢。

通常,您会在您的视图控制器的viewDidLoad:方法或viewDidAppear:(或甚至viewWillAppear:)中执行此操作。

在这些方法之外,如果您实质性地更改用于向表中提供数据的数据数组的内容,您可能需要致电reloadData:。例如,假设您有一个包含每个库存级别的产品列表。在初始视图中,您可能只显示数组中的所有内容。但是,假设您应用了一个过滤器来仅显示零库存的产品。包含产品的阵列将被缩小为只包含那些产品,因此在缩小阵列后,您可以在表格上调用reloadData:,以便更新视图。

顺便说一下,正如我最近发现的,当您拨打reloadData:时,表格会异步(很快)重新加载。但是,方法deleteRows...,deleteSections...,insertRows...insertSections...(特别是在beginUpdates:endUpdates:调用之间)是同步执行的,并且对于大型表可以显着减慢应用程序(并冻结UI)。你的里程可能会有所不同,但那是我对这些方法的经验。我实际上去了一个模型,我使用deleteSections...,然后使用reloadData:(因为我正在删除所有部分)。

您可以使用

//fetch data from database.. and update array 

//reload table data asper new data 

[self.tableView reloadData];