我一直在为我的应用程序查看此代码很长一段时间。当用户添加ALBUM时,它会将其添加到RootViewController中的数组(listOfItems)。然后不同的类调用它来更新(reloadData)。在查看一些NSLog之后,它会执行以下操作
numberOfRowsInSection
更新了多少行(正确)cellForRowAtIndexPath
显示行(NSLog显示listOfItems正确)numberOfRowsInSection
重复并删除所有新数据cellForRowAtIndexPath
再次重复,它显示除了新数据之外的所有内容我不知道为什么会重复 - 我只打电话给[self.tableView reloadData];
一次。
我已经检查了所有的NSTimers,我甚至让应用程序在控制台显示中只坐了一会儿。
请帮忙! 库尔顿
PS:如果您需要任何代码,请询问!
编辑:以下是发生了什么的NSLog示例
Number Of Rows: 3
Array: (One, Two, Three)
Cell Text:One 单元格文本:两个 单元格文本:三个
---添加“四”的单元格---
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:很抱歉长代码,但再次感谢!
答案 0 :(得分:3)
对于tableview中显示的每个单元格,CellForRowAtIndexPath会重复,需要更多关于放置NSLog的位置的信息。
答案 1 :(得分:2)
在numberOfRowsInSection
的实现中的某处添加断点。当您点击断点切换到调试器视图并查看堆栈跟踪时。为您获得的两个电话执行此操作。
向下看,直到找到属于你的方法(显示为粗体)。你应该能够找出你在哪里打电话reloadData
。
如果对于断点命中,你找不到自己的任何方法作为通话来源,那么也许你有一个NSTimer或者为你调用它的东西。
快乐的调试:)
答案 2 :(得分:1)
不确定这是否有帮助,但如果您在课堂上有[super viewWillAppear:animated]
,请尝试在viewWillAppear
中取消- (void)viewWillAppear:(BOOL)animated {
//[super viewWillAppear:animated];
}
。它似乎是较新版本的sdk中的一个错误。
{{1}}
答案 3 :(得分:-1)
如果其他人遇到此问题,只需使用NSTimer每隔X秒重新加载一次数据。我甚至在ARAAY上做了一个小计数器来填充数据和当前表中的ROWS以查看是否有必要更新。如果没有,它什么都不做。