【问题标题】:reloadData gets called twice?reloadData 被调用两次?
【发布时间】:2011-03-09 04:03:15
【问题描述】:

我已经为我的应用程序查看此代码很长时间了。当用户添加 ALBUM 时,它会将其添加到 RootViewController 中的数组 (listOfItems) 中。然后不同的类调用它来更新(reloadData)。在查看了一些 NSLogs 之后,它会执行以下操作

  • numberOfRowsInSection 更新行数(正确)
  • cellForRowAtIndexPath显示行(NSLog显示listOfItems是正确的)
  • numberOfRowsInSection 重复并删除所有新数据
  • cellForRowAtIndexPath 再次重复,它显示了除新数据之外的所有内容

我不知道它为什么会重复 - 我只打电话给[self.tableView reloadData]; 一次。

我已经检查了我所有的 NSTimers,我什至让应用程序在那里停留了大约一分钟,控制台中什么也没有出现。

请帮忙! 库尔顿

PS:如果您需要任何代码,请询问!


编辑:这是一个关于正在发生的事情的示例 NSLog

Number Of Rows: 3
Array: (One, Two, Three)

单元格文本:一个 单元格文本:两个 单元格文本:三个

--- 添加“四”的单元格---

Number of Rows: 4
Array: (One, Two, Three, Four)

Number of Rows: 3
Array: (One, Two, Three)

Cell Text: One
Cell Text: Two
Cell Text: Three

编辑:完整的 RootViewContoller.m

REMOVED

PS:抱歉代码太长,再次感谢!

【问题讨论】:

    标签: objective-c cocoa-touch uitableview ios4 reloaddata


    【解决方案1】:

    对于表格视图中显示的每个单元格,CellForRowAtIndexPath 重复,需要更多关于放置 NSLogs 的信息。

    【讨论】:

    • 我没有看到您放置 NSLog 代码的区域,(可能是说明您如何获得这些 nslog 的示例代码)。我不明白这些是如何造成问题的。
    • 刚刚添加了我的 RootViewController.m
    【解决方案2】:

    numberOfRowsInSection 的实现中的某处添加断点。当您点击断点切换到调试器视图并查看堆栈跟踪。为您收到的两个电话执行此操作。 在堆栈中向下查找,直到找到属于您的方法(以粗体显示)。你应该能够知道你在哪里打电话给reloadData

    如果对于断点命中,您找不到任何自己的方法作为调用源,那么也许您确实有一个 NSTimer 或为您调用它的东西。

    调试愉快:)

    【讨论】:

    • 添加了断点,但应用程序无法加载。这不好,因为我稍后会添加内容。
    • 您可以在应用程序启动后添加断点。只需启动应用程序并获得一个您认为接近加载您提到的数据的点。然后转到 XCode,添加断点并继续使用应用程序,直到遇到断点。这样您就不会在每次 reloadData 时卡在每个屏幕上。一个更酷的方法是使用条件断点。到目前为止我从未使用过它们,所以我无法为您提供帮助,但我知道它们存在:仅在满足条件时触发的断点。
    【解决方案3】:

    不确定这是否有帮助,但如果您的班级中有 [super viewWillAppear:animated] 的评论,请尝试在 viewWillAppear 中评论。这似乎是较新版本的 sdk 中的一个错误。

    - (void)viewWillAppear:(BOOL)animated {
        //[super viewWillAppear:animated];
    }
    

    【讨论】:

      【解决方案4】:

      如果其他人有这个问题,只需使用 NSTimer 每 X 秒重新加载一次数据。我什至在 ARAAY 上做了一个小计数器,它填充了当前表中的数据和 ROWS,看看是否有必要更新。如果没有,它什么也做不了。

      【讨论】:

        猜你喜欢
        • 2011-09-01
        • 1970-01-01
        • 2016-04-01
        • 2012-05-05
        • 2017-01-19
        • 2014-02-04
        • 2016-12-13
        • 2016-01-30
        • 2015-12-20
        相关资源
        最近更新 更多