【发布时间】: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