UITableView重新加载数据

And*_*i S 27 iphone objective-c uitableview

我正在为iphone制作一个基于导航的应用程序.

我的一个视图控制器看起来像这样:

@interface NewComputerViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
Run Code Online (Sandbox Code Playgroud)

所以我用a UITableView来显示数据.

当视图加载时,我使用顶部导航栏中的一个按钮来运行一个函数loadStuff加载一些字典中的东西.

我的问题:如何从该loadStuff函数(属于视图控制器)重新填充该视图控制器中的表视图

SPa*_*til 53

你总是可以使用[tableView reloadData]方法!

但是如果你有一些本地存储的数据并从某个服务器加载新东西,你可以去:

[tableView beginUpdates];
[tableView insertRowsAtIndexPaths:*arrayOfIndexPaths* withRowAnimation:*rowAnimation*];
[tableView endUpdates];
Run Code Online (Sandbox Code Playgroud)

如果要删除现有行,可以使用

[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:*arrayOfIndexPaths* withRowAnimation:*rowAnimation*];
[tableView endUpdates];
Run Code Online (Sandbox Code Playgroud)


sud*_*-rf 25

尝试使用[tableView reloadData];(其中tableView是实例变量的名称)

  • 有些男人只想看世界燃烧; P (9认同)
  • @Emil:我希望有一天没有人会尝试.;) (3认同)

Dev*_*ski 5

甚至重装......

[tableView reloadData];
Run Code Online (Sandbox Code Playgroud)

将不会重新加载已编辑的行/单元格,].检查tableView的IBOutlet未在XIB文件中连接.

这可能是其中一个原因.


Phi*_*ler 5

非常重要的是,您需要确保 tableview 的来源也反映了您的更改。

当您删除某些内容时,[tableView reloadData] 不会在您不先删除源中的项目时执行任何操作。

我在以下情况下遇到了这个问题:我有一个 tableview,它显示了我的文档文件夹中的一些文件。然后我想删除一些文件,我在文档文件夹中删除了它们,但它们仍然出现在我的列表中。我在这篇文章中尝试了 [tableView reloadData] 和所有其他建议的答案,但仍然列出了文件。当我关闭 tableview 并再次打开它时,列表很好。为什么?好吧,因为我用我所有的文件填充了一个 NSArray -> 这是我的 tableView 的“源”。因此,当我删除文件时,不仅需要删除文档文件夹中的文件,还需要将其从数组中删除。-> 所以我做了一个 NSMutableArray 来有能力删除它。然后调用[tableView reloadData],列表就好了。;-)


小智 5

确保您正在设置datasource和委托tableView

tableView.delegate = self;
tableView.dataSource = self;
Run Code Online (Sandbox Code Playgroud)

确保在控制器中实现了正确的委托和数据源方法。

在loadStuff方法中,调用:

[tableView reloadData];
Run Code Online (Sandbox Code Playgroud)

很快,同样:

tableView.delegate = self
tableView.dataSource = self
tableView.reloadData()
Run Code Online (Sandbox Code Playgroud)