用不同数量的行重新载入UITableView

问题描述:

我有一个UITableView设置和工作,现在我有一个小问题。当视图加载时,我需要重新加载tableView的数据,并且当表视图中没有数据开始时,我无法工作的一件事就是试图重新加载数据。用不同数量的行重新载入UITableView

基本上这个列表是可变长度的,内容是从一个文件加载的,我想知道的是,我有办法强制表重新加载,而不是忽略数据源方法,就像每当调用[tableView reloadData]时会发生什么。

[tableView reloadData]完全依赖数据源方法!所以,你会忽略你的数据源方法的唯一方法就是你没有将表视图的数据源(也可能是委托)设置为你想成为数据源的对象。您可以设置这些通过界面生成器,或编程,例如:

tableView.dataSource = self; 
tableView.delegate = self; 
+0

数据源/委托都已设置,但我感觉它只为表中已存在的每个单元重新加载数据,在这种情况下为0. – 2011-04-27 15:41:58

+0

不应该如此。 'numberOfRowsInSection:'的典型实现是返回数组中对象的数量。所以我不得不相信像这样的数据源方法经常被咨询。你可以在该方法中设置一个断点来验证它是否被调用。当然,你必须实际调用'reloadData:'。我假设你至少这样做了,对吧? :-) – 2011-04-27 16:03:33

+0

对,我设置了断点,并发现它在每次加载视图时调用,并且双重检查我正在调用reloadData :)现在它似乎正在工作。这一定是与另一个视图写入文件并搞砸了 - 对于混乱错误!但至少我们知道每次现在都会调用NumberOfRowsInSection。 – 2011-04-27 16:10:55

数据源的方法不忽略当u调用[的tableView reloadData]; 你是否设置了IBOUTLET和源代码?

每当视图负载

你在哪里打电话reloadData?你在-viewDidLoad方法中调用它吗?如果是,则可能是不正确的,因为-viewDidLoad仅被调用一次 - 在创建相应UIViewController的视图时(在第一次使用时)。也许你应该看看-viewWillAppear这是所谓的(假设正确使用UIViewController)每当视图将被显示。

另一个可能的原因是,如果你使用-viewWillAppear(或-viewDidAppear)就不会被触发的。如果您使用自定义的UIViewController层次结构,则会发生这种情况。在这种情况下,你必须用你自己的双手来调用它(也有例外 - 例如UINavigationController为你做了这个,但简单的[someView addSubview:myController.view]没有)。

此外,请检查代表是否设置正确,tableView不等于零(因为你知道消息到零被忽略)。

+0

是的,使用-viewDidAppear,我检查了这个方法,并且每次加载视图时都会调用它(Tabbar控制器中的tableview控制器)。代表们确实成立了。尽管谢谢你的回应! – 2011-04-27 15:51:43