如何使用tableView iphone的reloadData方法

时间:2011-04-08 17:52:10

标签: iphone uitableview

我有一个UITableViewController类。我正在使用NSMutableArray来填充表格单元格。我从数据库和数据库中获取数据将它添加到数组。但细胞显示出旧的结果。我如何使用reladData方法&我应该在我的UITableViewController中调用此方法?

5 个答案:

答案 0 :(得分:4)

我引用Apple的文档何时不使用它:

  

表格视图的委托或数据   source在需要时调用此方法   表视图完全重载   它的数据。它不应该被称为   插入或删除的方法   行,尤其是动画中的行   通过调用实现的块   beginUpdates和endUpdates。

因此,在更改模型时调用它,但不使用tableview方法更改表格,如:

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

答案 1 :(得分:3)

您可以使用

重新加载表格单元格
//fetch data from database.. and update array

//reload table data asper new data

[self.tableView reloadData];

答案 2 :(得分:2)

当您想要强制重新加载表格或者当您知道尚未绘制表格时,您可以(并且应该)调用reloadData:

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

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

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

答案 3 :(得分:0)

每当调用reloadData方法时,都会刷新表视图。如果要在从数据库加载数据后刷新表,则可以在完成提取时调用重新加载数据。

// code to fetch data from database

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

答案 4 :(得分:0)

在数组类型的实例类前面添加{ didSet { tableview.reloadData() }

示例:

快速班级代码:

class Data {
  var name  = ""
  var height = ""
}

ViewController代码/类型为空数组的即时DataClass

let dataINDataClass = [Data]  { 

  didSet {

  tableview.reloadData()

}

希望这会有所帮助。