我已经阅读过关于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并释放时,第一行暂时消失,突然它会在返回视图时显示预期内容。
有什么想法吗?
答案 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一些调试数据的拖车垃圾方法,很明显事情正在按预期调用,但是没有为每个单元正确地提取数据。
呼!