numberOfRowsInSection:未在reloadData上调用

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (313)

我有一个UITableView使用数组列出数据。这很好用。我还有一个用于在该tableview中搜索的UISearchBar。当tableviews数组中的数据匹配时,这些行将被添加到另一个可变数组中,而cellForRowAtIndexPath:则显示来自该可变数组的数据。

但是当我调用reloadData时,从不调用numberOfRowsInSection :. 因此,滚动时tableview崩溃,因为它试图从可变数组中获取数据,但是对于原始数组中的行(具有更多项)

我已经调试了很长一段时间,但不能找到原因。Datasource和Delegate连接在tableview中,因为它可以显示原始数组中的数据。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
     NSLog(@"isSearching: %d", isSearching);
     // Return the number of rows in the section.
     if(!isSearching)
        return [originalArray count];

     NSLog(@"isSearching - Return searchCopyListOfItems");
     return [searchCopyListOfItems count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     static NSString *CellIdentifier = @"Cell";
     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

     if(cell == nil) {
         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
     }

     if(!searching)
         cell.textLabel.text = [originalArray objectAtIndex:indexPath.row];
     else
         cell.textLabel.text = [searchCopyListOfItems objectAtIndex:indexPath.row];

     return cell;
}
提问于
用户回答回答于

我今天和XCode 6.1有同样的问题

在我的代码中,我有dataSourcedelegate设置:

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    self.tableView.dataSource = self;
    self.tableView.delegate = self;
}

...奇怪的是,我的代码在第一次加载时填充表格...但它会忽略任何调用reloadData

在故事板中,当我右键单击故事板中的表格视图时,它的“插座”单选按钮是一个空白圆圈。

我拖着从这个空圈父一行UIView,并随后reloadData没有工作好。

不知何故,我丢失了IBOutlet我的UITableView控件和用于填充它的.h / .m文件之间的链接。

用户回答回答于

如果numberOfSections返回0numberOfRowsInSection将不会被调用。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励