2011-02-23 174 views
26

我正在爲iphone做導航應用程序。UITableView刷新數據

我的視圖控制器的一個看起來是這樣的:

@interface NewComputerViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> 

所以我使用一個UITableView顯示的數據。

當視圖加載時,我使用頂部導航欄中的按鈕來運行函數loadStuff在Dictionary中加載一些東西。

我的問題:我怎麼重新填充從loadStuff功能(屬於視圖控制器)在該視圖 - 控制表視圖

回答

53
嘗試

您可以隨時使用[tableView reloadData]方法!

但如果你有存儲一些數據在本地和一些服務器加載新的東西,那麼你可以去:

[tableView beginUpdates]; 
[tableView insertRowsAtIndexPaths:*arrayOfIndexPaths* withRowAnimation:*rowAnimation*]; 
[tableView endUpdates]; 

如果要刪除現有的行,你可以使用

[tableView beginUpdates]; 
[tableView deleteRowsAtIndexPaths:*arrayOfIndexPaths* withRowAnimation:*rowAnimation*]; 
[tableView endUpdates]; 
+0

什麼是arrayofindex路徑我正在使用表數據的mutabledictionary,我想從字典中刪除一個對象並更新tableview – pravin 2016-03-12 12:24:11

25

使用[tableView reloadData];(其中的tableView是你的實例變量的名稱)

+23

我loled在您的用戶名^^ – Emil 2011-02-23 18:36:29

+3

@Emil:我只希望沒有人嘗試這一天。 ;) – 2011-02-23 18:36:56

+0

儘管大多數機器上沒有任何事情發生,但幾乎每個操作系統都有一個塊。但令人遺憾的是:P – Emil 2011-02-23 18:37:58

3

在您的函數結束loadstuff通過編寫以下代碼重新加載ur表的內容:

[tableView reloadData]; 
5

即使重裝...

[tableView reloadData]; 

不會重新加載所編輯的行/細胞。在XIB文件中檢查tableView的IBOutlet沒有連接。

這可能是其中一個原因。

4

非常重要的一點是,您需要確保您的tableview的來源也反映了您的更改。

當你即時刪除某些東西時,如果你不先刪除源代碼中的項目,[tableView reloadData]將不會執行任何操作。

我在以下情況發生此問題: 我有一個tableview顯示我的文檔文件夾中的一些文件。然後我想刪除一些文件,並在文檔文件夾中刪除它們,但它們仍然出現在我的列表中。我試過[tableView reloadData]和這篇文章中的所有其他建議答案,但仍然列出了這些文件。 當我關閉tableview並再次打開它時,那麼列表沒有問題。爲什麼? 好吧,因爲我用我所有的文件填充了一個NSArray - >這是我的tableView的「源代碼」。所以當我刪除一個文件時,我不僅需要刪除文件夾中的文件,還需要將它從陣列中刪除。 - >所以我讓一個NSMutableArray有能力去除它。 然後調用[tableView reloadData]並且列表沒問題。 ;-)

0

[tableView reloadData];其中的tableview是你的UITableView的名稱

2

請確保您設置datasource並委派tableView

tableView.delegate = self; 
tableView.dataSource = self; 

確保在控制器中實現了正確的委託和數據源方法。

在loadStuff方法,請撥打:

[tableView reloadData]; 

在迅速,一致的:

tableView.delegate = self 
tableView.dataSource = self 
tableView.reloadData()