0

很长一段时间以来,我一直在为我的应用程序查看此代码。当用户添加 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)

单元格文本:1 单元格文本:2 单元格文本:3

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

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:对不起,代码很长,但再次感谢!

4

4 回答 4

3

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

于 2011-03-09T04:07:01.600 回答
2

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

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

调试愉快:)

于 2011-03-09T12:15:43.853 回答
1

不确定这是否有帮助,但如果你在班上有这种情况,请[super viewWillAppear:animated]尝试发表评论。viewWillAppear这似乎是较新版本的 sdk 中的错误。

- (void)viewWillAppear:(BOOL)animated {
    //[super viewWillAppear:animated];
}
于 2011-03-09T12:18:22.507 回答
-1

If anyone else has this problem, simply use a NSTimer to reload the data every X seconds. I even did a little counter on the ARAAY that populates the data and the ROWS currently in the table to see if it is necessary to update. If not, it doesn't do anything.

于 2011-03-10T04:33:52.053 回答