2011-04-08 93 views
0

我有一個UITableViewController類。我正在使用NSMutableArray填充表格單元格。我正在從數據庫&中獲取數據,並將其添加到數組中。但細胞正在顯示舊的結果。我如何使用reladData方法&我應該在哪裏調用我的UITableViewController中的這個方法?如何使用tableView的reloadData方法iphone

回答

4

我引述蘋果的文檔時不使用它:

表視圖的委託或數據源 當它想 表視圖完全重裝 其數據調用此方法。不應在 中調用插入或刪除 行的方法,尤其是在調用 beginUpdates和endUpdates時實現的動畫 中。

這麼叫吧,當你改變了你的模型,但沒有使用實現代碼如下方法來改變如表:

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

每當你調用reloadData方法,表視圖將被刷新。當你想在從數據庫加載數據後刷新表格時,可以在完成抓取時調用重新加載數據。

 
// code to fetch data from database 

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

刷新你的表格單元格,還看尼克韋弗的回答爲其他有價值的信息。 – taskinoor 2011-04-08 18:14:35

1

你可以(也應該)調用reloadData:時要強制表重新加載或當你知道它沒有被抽呢。

通常,您會在您的視圖控制器的viewDidLoad:方法或viewDidAppear:(或甚至viewWillAppear:)中執行此操作。

在這些方法之外,如果您實質性地更改用於向表中提供數據的數據數組的內容,您可能需要致電reloadData:。例如,假設您有一個包含每個庫存級別的產品列表。在初始視圖中,您可能只顯示數組中的所有內容。但是,假設您應用了一個過濾器來僅顯示零庫存的產品。包含產品的陣列將被縮小爲只包含那些產品,因此在縮小陣列後,您可以在表格上調用reloadData:,以便更新視圖。

順便說一下,正如我最近發現的,當您撥打reloadData:時,表格會異步(很快)重新加載。但是,方法deleteRows...,deleteSections...,insertRows...insertSections...(特別是在beginUpdates:endUpdates:調用之間)是同步執行的,並且對於大型表可以顯着減慢應用程序(並凍結UI)。你的里程可能會有所不同,但那是我對這些方法的經驗。我實際上去了一個模型,我使用deleteSections...,然後使用reloadData:(因爲我正在刪除所有部分)。

3

您可以使用

//fetch data from database.. and update array 

//reload table data asper new data 

[self.tableView reloadData]; 
相關問題