UITableView显示的行数超过了在numberOfRowsInSection方法中指定的行数。

6 浏览
0 Comments

UITableView显示的行数超过了在numberOfRowsInSection方法中指定的行数。

我希望我的tableView显示6行文本,文本内容为"Example"。据我所知,我的numberOfSectionsInTableView:numberOfRowsInSection:已经正确设置。请参考下面的示例代码:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
   // 返回section的数量
   return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
  // 返回section中的行数
  return 6;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{
  static NSString *CellIdentifier = @"Cell";
  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
  }
  cell.textLabel.text = @"Example";
  return cell;
}

问题是,当你看到下面的图片时,显示了不应该存在的行的分隔线。

enter image description here

如何去掉超过第6行的分隔线?

0
0 Comments

UITableView显示的行数多于numberOfRowsInSection:方法中指定的行数,这是因为tableView的高度设置问题。如果你在numberOfRowsInSection:方法中写入了返回6的代码,但是tableView的大小能够显示更多的行数,那么tableView会根据其大小来显示行数。如果你不想显示多余的行数,可以将UITableView的style设置为Grouped。

-1 for UITableViewStyleGrouped。这会影响整个表格的显示,而不是问题所要求的。移除分割线是改变样式的一个副作用。如果后续版本的Grouped样式中包含了额外的分割线,那么这种样式的改变就没有意义了。

非常好的方法,简单易行,快速解决问题!

0
0 Comments

UITableView显示比在numberOfRowsInSection中指定的行数更多的行,这个问题的出现的原因是因为当UITableView没有足够的数据来填充所有的行时,它会默认显示空白的单元格,这些单元格会显示分隔线。

解决这个问题的方法是通过添加一个尺寸为CGRectZero的footer view来告诉UITableView有一个footer,从而停止显示分隔线。代码如下:

[tableView setTableFooterView:[[UIView alloc] initWithFrame:CGRectZero]]

这样做的效果是告诉UITableView有一个footer,但是由于footer的frame是CGRectZero,所以不会显示任何内容,视觉效果就是分隔线停止显示。

这样做可以解决显示多余单元格的问题,而且可以显示出section header的灰色背景。

0
0 Comments

UITableView显示了比numberOfRowsInSection方法中指定的行数更多的行,这个问题的原因是在tableView的底部添加了额外的分割线。解决方法是通过设置tableView的tableFooterView属性为一个高度为零的UIView来移除额外的分割线。

在Swift中,可以通过以下代码解决这个问题:

override func viewDidLoad() {

super.viewDidLoad()

// 移除额外的分割线

self.tableView.tableFooterView = UIView(frame: CGRect.zero)

}

在Swift 3中,可以使用以下代码来移除额外的分割线:

override func viewDidLoad() {

super.viewDidLoad()

// 移除额外的分割线

self.tableView.tableFooterView = UIView(frame: CGRect.zero)

}

通过设置tableView的tableFooterView属性为一个高度为零的UIView,可以解决UITableView显示了比numberOfRowsInSection方法中指定的行数更多的行的问题。

0