数组没有到达cellForRowAtIndexPath

时间:2011-02-01 15:03:55

标签: objective-c ios

我正在尝试解析XML文档并将数组加载到表视图中。

在init中,我调用initializeDatabase,它生成一个URLRequest和Connection。然后我调用parseXML,它解析文档。一切似乎都运作良好。

完成后我想将结果数组加载到表视图中。没发生。

我已经在每个方法中放置了NSLog语句来跟踪它,包括表视图数据源方法。

  

2011-02-01 07:29:17.770 Project [1664:207] initializeDatabase:
  2011-02-01 07:29:17.814项目[1664:207] numberOfSections
  2011-02-01 07:29:17.815 Project [1664:207]导致numberOfRowsInSection :( null)
  2011-02-01 07:29:18.560项目[1664:207]连接已完成   2011-02-01 07:29:18.562项目[1664:207] connectionDidFinishLoading:
  2011-02-01 07:29:18.562项目[1664:207] parseXML称为
  2011-02-01 07:29:18.563 Project [1664:207] parserDidStartDocument
  2011-02-01 07:29:18.564 Project [1664:207] parserDidEndDocument:
  2011-02-01 07:29:18.564项目[1664:207]结果:“ProjectData:0x4e461b0”

未调用cellForRowAtIndexPath。我不确定为什么。

有什么想法吗?

库尔特

2 个答案:

答案 0 :(得分:1)

听起来你需要在解析数据后在表视图上运行方法reloadData。重新加载数据会使表视图询问其数据源应显示的行数。表视图在viewDidLoad上自动执行此操作,但在您的情况下,此时您没有要显示的任何数据。因此,在parserDidEndDocument中,运行[tableView reloadData];

其他解决方案,确保委托和数据源都设置为正确的实例。

答案 1 :(得分:0)

您还可以使用NSArrayController和绑定。将contentArray设置为已解析数据的数组,并绑定每列的VALUE。确保tableView上的dataSource未设置为任何内容。你现在不必每次都调用reloadData。