在使用 reloadData 之前我应该​​清除表视图吗?

发布于 2024-10-29 23:21:10 字数 495 浏览 4 评论 0原文

我想将新值放入表视图中。

我的 tableView:cellForRowAtIndexPath: 具有以下内容

if (cell == nil) { // do something }

当我删除顶部的 if 语句并使用 reloadData 时,应用程序崩溃。在使用 reloadData 之前,我是否需要清除表中的旧值?如果是这样怎么办?
谢谢

编辑:

抱歉,我不是故意将reloadData放入tableView:cellForRowAtIndexPath:中。我把它放在另一个方法中,并从 tableView:cellForRowAtIndexPath: 内部删除了 if (cell == nil) { // do some }

I want to put new values in a table view.

My tableView:cellForRowAtIndexPath: has the following

if (cell == nil) { // do something }

When I remove the if statement on top and use reloadData the app crashes. Do I need to clear the old values in the table before I use reloadData? If so how?
Thanks

Edit:

I'm sorry i didnt mean that i put reloadData inside tableView:cellForRowAtIndexPath:. i put it inside another method and removed if (cell == nil) { // do something } from inside tableView:cellForRowAtIndexPath:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

口干舌燥 2024-11-05 23:21:10

您应该阅读 TableView 编程指南 熟悉这些概念。 reloadData 是最终调用 tableView:cellForRowAtIndexPath: 的方法。

You should read the TableView Programming Guide to familiarize yourself with the concepts. reloadData is a method that eventually calls tableView:cellForRowAtIndexPath:.

关于从前 2024-11-05 23:21:10

您通过在内部调用 reloadData 来生成无限循环

tableView:cellForRowAtIndexPath:

You are generating infinite loop by calling reloadData inside

tableView:cellForRowAtIndexPath:
韬韬不绝 2024-11-05 23:21:10

无需清除表视图中的数据。不过,您可能需要确保在 UITableViewCell 子类中正确实现 -prepareForReuse ,以便重用的单元格不会显示旧数据。

顺便说一句,不清楚为什么要删除 if (cell == nil) 位。如果没有可以重用(出列)的单元,那么您需要创建一个新单元。如果不这样做,您将返回 nil,这将导致 UITableView 出现异常。

There is no need to clear data in a table view. You may want to ensure you properly implement -prepareForReuse in your UITableViewCell subclasses though, so that reused cells don't show old data.

It's BTW unclear why you want to remove the if (cell == nil) bit. If there is no cell to reuse (dequeue) then you need to create a new one. If you don't you'll return nil, which will cause an exception in UITableView.

对你再特殊 2024-11-05 23:21:10

您(99% 的时间)无法从 tableView:cellForRowAtIndexPath: 调用 reloadData
这是因为 reloadData 最终会调用 tableView:cellForRowAtIndexPath,因此您会得到一个永无休止的循环。

您需要更多地解释您想要做什么(并且一些额外的代码会很好),以便进一步回答问题。

You (99% of the time) can't call reloadData from tableView:cellForRowAtIndexPath:.
This is because reloadData eventually calls tableView:cellForRowAtIndexPath, so you get a never ending loop.

You need to explain more what you trying to do (and some extra code would be nice) in order to answer the question further.

揽月 2024-11-05 23:21:10

reloadData 调用所有 tableView 数据源,因此不能在 cellForRowAtIndexPath 中调用它,否则会造成无限循环。

reloadData calls all tableView data source , so you cann't call it in cellForRowAtIndexPath it will make an infinite loop.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文