iPhone - 在tableView中重复的UITableViewController和Core Data行

时间:2011-01-28 15:07:31

标签: iphone uitableview core-data uisearchdisplaycontroller

我是Cocoa和Core Data的新手,我遇到了一个奇怪的问题。我成功创建了Core Data模型,导入了数据,创建了UI(导航控制器,带有searcDdisplayController的tableViewController),但现在我遇到了一个问题。如果我实现 UITableViewController nib 文件中没有 UITableView ),从 fetchedResultsController 获取的结果很奇怪 - 行数是正确的(500行),但它们正在重复 - 只有8个不同的行。

但是,我可以通过添加@synthesize tableView来解决此问题;在 .m 文件中。

然后我遇到了另一个问题 - 当我点击一行并按下详细信息视图,然后单击导航控制器上的后退按钮时,仍然会选中tableView中的选定行。

我希望我明白错在哪里。让我回顾一下: 如果我没有把@synthesize tableView;在实现文件的顶部,取消选择该行正常,但结果是错误的 - 在tableView中重复8行(500行)。 如果我将@synthesize放在文件中,那么tableView中的数据是正确的,但是当我使用导航控制器返回tableView时没有动画。

我还尝试在 listviewcontroller 的nib文件中放置 UITableView ,但结果是相同的 - 没有取消选择该行。我还尝试取消选择viewWillAppear委托中的行,但indexPath of the indexPathForSelectedRow null

哦,我正在使用 NSFetchedResultsController 。就像我说的那样 - 获取的结果是正确的,但似乎它们没有正确地输入到tableview(如果它没有合成......)

谢谢!

2 个答案:

答案 0 :(得分:1)

我或许可以解决您的行突出显示问题,但您需要包含一些代码示例,以便我们可以帮助您处理其他项目......

要取消选择一行,您可以调用方法[deselectRowAtIndexPath:animated:],这样您就可以在从tableView选择委托推送详细视图控制器之前或之后取消选择该行。 Table View Reference

答案 1 :(得分:0)

感谢您的回复!

嗯..我可能已经找到了解决方案,但我不确定它是否正确..我在我的新类中实现了UITableViewController,但实际上我正在使用新的UITableView(tableView2)进行数据获取。在nib文件中我创建了UITableViewController,将Class name设置为我的自定义类但是我没有将Interface Builder中的Table View与我新创建的tableView2连接起来。我希望你能理解......这很复杂,这一切都很简单:S

所以,如果我做对了 - 如果我实现了一个UITableViewController,我的类会自动获得一个self.tableView吗?但是,就像我在我的问题中所说的那样,如果我没有在.m文件中合成属性,控制器就不能自动取消选择该行..但如果我这样做,则数据不正确并且正在重复...也许在cellForRowAtIndexPath中存在问题,我从self.tableView获取我的单元格。但这不合逻辑:S

无论如何,现在行取消选择动画在没有干扰的情况下工作,显示的数据是正确的。我怀疑如果使用NSFetchedResultsController,UITableViewController还有其他一些需要覆盖的方法。

您认为我的方法不正确吗?在我的自定义UITableViewController类中有一个新的UITableView?