【问题标题】:Adding data to a UITableView while the UITableView is visible?在 UITableView 可见时向 UITableView 添加数据?
【发布时间】:2011-12-05 01:43:23
【问题描述】:

我已经阅读了关于 UITableView 和 reloadData 的所有关于 SO 的帖子,但没有发现对我有用。

在 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 并释放时,第一行暂时消失了,当它重新进入视图时,它会突然显示预期的内容。

有什么想法吗?

【问题讨论】:

  • 我的猜测是另一个委托方法 - numberOfRowsInSection - 没有正确执行。或者它当然可以是 numberOfSectionsInTableView。重新加载后,其中一个或两个都返回零。
  • 我没有实现numberOfSectionsInTableView,只有numberOfRowsInSection。如果您的表格视图中只有一个部分,我不知道 numberOfSectionsInTableView 是必需的,但我会尝试一下(大概它只需要返回 1)。但是,我持怀疑态度,因为如果我从一个完整的数据数组开始,所有数据都会出现。在这种情况下,numberOfSectionsInTableView 仍然不存在,但它可以工作......
  • @xj1200 尽管我的所有委托方法都正常工作,但最终你还是走在了正确的轨道上。详情见我的回答。
  • 有道理。太好了,你把它整理好了。

标签: ios uitableview


【解决方案1】:

我相信你打电话[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];}

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

【讨论】:

  • 是的,作为代表,我已经在我的子类中实现了这些例程。他们使用 NSMutableArray。所以这应该在这里工作。
【解决方案2】:

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

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

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

哇!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 2012-02-19
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 2012-03-08
    • 2013-09-21
    相关资源
    最近更新 更多