即使numberOfRowsInSection中的[objects count]显示46个对象

时间:2016-02-03 06:34:59

标签: ios objective-c uitableview

要拉我的头发。 我的tableview突然停止加载数据。 我在numberOfRowsInSectioncellForRowAtIndexPath中有断点。 numberOfRowsInSection就像

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [objects count];
}
由于某种原因,

被调用三次,当视图最初加载时,objects数组中的对象数为0,这可以理解,因为tableview最初没有任何数据。

从服务器获取数据并将这些对象存储在objects数组中并调用[self.tableView reloadData];后,numberOfRowsInSection会再次调用objects数组中的对象数这次是46岁,但由于某种原因,它仍然没有继续进入cellForRowAtIndexPath

我尝试在主线程上重新加载数据 -

dispatch_async(dispatch_get_main_queue(), ^{
    [self.tableView reloadData];
});

没用。

我检查了所有拼写。

当我重新加载数据时,检查我的UITableView对象不是nil。

表格视图的框架在viewDidLoad中为320.0000 * 568.0000。

不知道出了什么问题。我假设我打破了一些东西,因为数据加载得很好。

2 个答案:

答案 0 :(得分:1)

我假设您正在从另一个视图加载视图,那么您应该在ViewDidLoad上调用[tableView reloadData]并在那里更新dataSource数组。这是因为视图生命周期 - 当您从一个视图返回并且您的tableView数据源更新时,视图生命周期将如下所示:

  1. viewDidLoad中
  2. tableViewDelegateMethods
  3. viewDidAppear
  4. 因此,当您更新tableView的数据源对象并在viewDidLoad期间调用reloadData时,将解决该问题。

答案 1 :(得分:0)

[self.tableView beginUpdates];

我不知道何时以及为何添加此内容,然后忘记致电endUpdates。叹息。

感谢社区。巨大的帮助!