2011-02-23 140 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()