在UITableView可见时将数据添加到UITableView?

时间:2011-10-11 07:15:00

标签: ios uitableview

我已经阅读过关于UITableView和reloadData的所有帖子,而且我发现的任何内容都不适用于我。

在UI构建器中,我有一个UIViewController xib文件,其中包含UIView,在UIView上有一个UITableView。我的UIViewController子类是作为xib的文件所有者的引用。我的子类是一个UITableViewDataSource和UITableViewDelegate,我已经连接了dataSource并委托引用出口指向UI构建器中的UITableView。我已将构建器中的UITableView链接到我的子类中定义的IBOutlet。

最初显示UITableView时,我用作数据源的底层NSMutableArray没有数据,因此UITableView按预期为空。

稍后,我修改数组,向其中添加数据。

然后我尝试了以下刷新UITableView的视图,但都无济于事:

  • 更改数组后调用[myTableView reloadData]

  • 调用[myTableView performSelectorOnMainThread:@selector(reloadData)withObject:nil waitUntilDone:NO];

  • 在myTableView上调用了insertRowsAtIndexPaths,以为我可能需要实际告诉它要更新哪一行。

这些都不起作用。然而,数据就在那里,所有东西似乎都连接好了,因为每当我向上拖动UITableView并释放时,第一行暂时消失,突然它会在返回视图时显示预期内容。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我确信您有权致电[tableView reloadData]

但您可能想在此方法中设置[数组计数]

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

之内
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.textLabel.text = [array objectAtIndex:indexPath];}

这应该允许您显示数组中的数据。

答案 1 :(得分:0)

虽然我把所有东西都正确连接起来,但我正在追逐我的尾巴。最终问题不在于UITable,而是底层数组不是用作我的UITableView的基础,而是使用我用来为每个单元格生成文本的字典!

正在更新数组,然后调用reloadData。但是在调用reloadData之前,字典没有加载必要的数据。所以UITable被“填充”了正确的行数,但它们都显得空白,看起来好像根本没有用。

一旦我为每次调用我的UITableView代表采用NSLogging一些调试数据的拖车垃圾方法,很明显事情正在按预期调用,但是没有为每个单元正确地提取数据。

呼!