重新加载数据不会调用cellForRowAtIndexPath:

时间:2015-11-12 22:36:07

标签: ios objective-c uitableview

因为我认为我在stackoverflow上尝试了所有可能的东西,所以我一直在撞墙。

所以目前我正在创建一个像这样的表

- (UITableViewCell *)tableView:(UITableView *)tableView     cellForRowAtIndexPath:  (NSIndexPath *)indexPath {
  NSLog(@"CHECK IF THIS IS CALLED");
  static NSString *CellIdentifer = @"CellIdentifier";
  CBPeripheral *placeHolder;

  UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifer];
  // Using a cell identifier will allow your app to reuse cells as they come and go from the screen.
  if (cell == nil) {
    cell = [[UITableViewCell alloc]  initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifer];
  }
       cell.selectionStyle = UITableViewCellSelectionStyleNone;
       placeHolder = _connectedPeripherals[indexPath.row];
       cell.textLabel.text = placeHolder.name;
   }
   return cell;
}

我正在调用我调用的另一个函数[self.tableView reloadData]。我知道它在该函数中被调用,但cellForRowAtIndexPath不再被调用。

我在.h文件中创建了一个UITableView属性 @property (strong, nonatomic) UITableView *tableView;

并创建了这样的表

self.tableView = [[UITableView alloc] init];
self.tableView.rowHeight = 60.0f;
self.tableView.delegate = self;
self.tableView.dataSource = self;



self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
[self.view addSubview:self.tableView];
[self.view addConstraints:@[ [HTConstraints leftAlignView:self.tableView
                                                 toView:self.view
                                            withSpacing:5],

                           [HTConstraints topAlignView:self.tableView
                                                toView:self.view
                                           withSpacing:5],

                           [HTConstraints rightAlignView:self.tableView
                                                  toView:self.view
                                             withSpacing:5],

                           [HTConstraints bottomAlignView:self.tableView
                                                   toView:self.view
                                              withSpacing:5],
                           ]];

到目前为止,我尝试过确保在主线程中调用[self.tableView reloadData]。确保我的部分没有返回0。

修改 这是我的reloadData函数,在另一个类中调用 按[[RootViewController sharedInstance] reloadData];并在我打电话时打印日志。

- (void)reloadData {
  NSLog(@"Reloading");
  [self.tableView reloadData];
}

2 个答案:

答案 0 :(得分:-1)

在内部设置断点 - (void)reloadData或尝试在NSLog中附加UITableView数据源的计数。

通常,cellForRowAtIndexPath没有被调用,因为它没有任何东西可以显示。

答案 1 :(得分:-1)

我看到,在您的代码中,您忘记将tableView作为子视图添加到控制器中。 在tableView的初始化之后添加以下代码

[self.view addSubview:tableView];