UITableView dataSource必须从tableView返回一个单元格:cellForRowAtIndexPath:Exception

phx*_*phx 43 iphone uitableview

我实际上没有看到我的错误:

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

  FriendTableViewCell *cell = (FriendTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  if (cell == nil) {
      cell = [[[FriendTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
      [[NSBundle mainBundle] loadNibNamed:@"FriendTableViewCell" owner:self options:nil];
      cell = friendCell;
  }
  cell.lblNickname.text =  @"Tester";
  return cell;
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我检查了两次..但没有看到错误.

谢谢你的帮助!

gre*_*sus 66

你回来了朋友凯尔,而且很可能是零.

您的代码看起来很好,因此请确保您正确设置了Interface Builder文件.在FriendTableViewCell.xib中,确保文件所有者是您的表视图控制器,并且您正确地将单元格设置为friendCell的出口(我假设它是一个UITableViewCell).


Jom*_*nJi 33

对我来说,它的工作原理如下:

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
Run Code Online (Sandbox Code Playgroud)

更新
将以上代码放在以下方法中:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Run Code Online (Sandbox Code Playgroud)

编辑tableViewCell 之前,先把它放好