Iphone UITableView didSelectRowAtIndexPath返回错误的行索引(iOS7)

Iphone UITableView didSelectRowAtIndexPath返回错误的行索引(iOS7),iphone,ios,objective-c,ios7,Iphone,Ios,Objective C,Ios7,我有一个类“myUIImage”是从UIScrollView扩展而来的。它有一个UIImageView变量。 ViewControllerdelegate“UITableViewDataSource,UITableViewDelegate” 当我将myUIImage对象添加到cellforrowatinexpath函数中的所有单元格中(使用填充整个单元格的cellview)时,就会出现问题 当我触摸其中一行时,didSelectRowAtIndexpath在iOS7上返回错误的行索引。它在旧版本

我有一个类“
myUIImage
”是从
UIScrollView
扩展而来的。它有一个
UIImageView
变量。
ViewController
delegate“
UITableViewDataSource
UITableViewDelegate

当我将
myUIImage
对象添加到
cellforrowatinexpath
函数中的所有单元格中(使用填充整个单元格的
cellview
)时,就会出现问题

当我触摸其中一行时,didSelectRowAtIndexpath在iOS7上返回错误的行索引。它在旧版本中运行良好

我把示例xCode项目放在这里;

谢谢你的帮助

编辑1:

这是一个视频示例。请仔细观察下面右侧的圆木。

这在iOS 6和iOS 7上都能完美运行,因为我看过你的代码。你的代码也很完美。但有一个问题是,您没有使用可重用单元。因此,它可能会产生与内存相关的问题,这不是一个好的做法。

这不是
UITableView
的正常行为。但在我看来,如果你在滚动时单击,并且如果它停止,它会记住你最后一次单击的位置,那么这种情况就会发生。 我建议您在
情节提要
内的视图中插入
UITableView
。将
UITableView
委托
数据源
连接到
文件所有者
,而不仅仅是使用这些方法

numberOfSectionsInTableView 
numberOfRowsInSection 
cellForRowAtIndexPath
didSelectRowAtIndexPath

也许以编程方式生成tableview的方式缺少任何属性。另一方面,您只需查看右侧的
InterfaceBuilder
设置,就可以更轻松地更改设置

在iOS 7中,也只返回正确的索引…这段代码有什么问题???如果您创建一个自定义单元格,您应该为该单元格创建一个新的类和nib文件。通过这种方式,您还可以为您的销售设置一个标识符,如果您还添加了任何图像,那么您的tableView不会变得太懒。请看一下本教程。但看起来并没有什么问题。Erik请触摸上面的一行,然后滚动桌面视图并触摸下面17-19行中的一行。看看日志。当你第一次触摸时,当你仔细观察时,你会看到错误的值。我无法重现你描述的问题-事情似乎进展顺利。我想我应该添加一个视频:)一切都太复杂了。TableView可以插入到情节提要中,这样您就可以使用interfacebuilder中的设置。拥有单元格,以便可以将所有元素设置到正确的位置。自己的标识符…我不认为这会在将来造成什么大问题。可重用单元的存在是出于性能原因,但它们肯定不是必需的。虽然OP使用可重复使用的单元来确保他不会重新创建单元是值得的,而且我同意重新创建单元是一种不好的做法,但它不会导致任何严重的问题或bug。@CraigOtis我的意思是它会产生与内存相关的问题。我认为这可能是一个大问题。你也知道这不是一个很好的编程实践。因为我们需要尽可能少地使用资源。伙计们,这只是我创建的一个测试项目,旨在向您展示这个案例:)