如何使用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];
你可以(也应该)调用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];
刷新你的表格单元格,还看尼克韦弗的回答为其他有价值的信息。 – taskinoor 2011-04-08 18:14:35