UITableView显示的行数超过了在numberOfRowsInSection方法中指定的行数。
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; }
问题是,当你看到下面的图片时,显示了不应该存在的行的分隔线。
如何去掉超过第6行的分隔线?
UITableView显示的行数多于numberOfRowsInSection:方法中指定的行数,这是因为tableView的高度设置问题。如果你在numberOfRowsInSection:方法中写入了返回6的代码,但是tableView的大小能够显示更多的行数,那么tableView会根据其大小来显示行数。如果你不想显示多余的行数,可以将UITableView的style设置为Grouped。
-1 for UITableViewStyleGrouped。这会影响整个表格的显示,而不是问题所要求的。移除分割线是改变样式的一个副作用。如果后续版本的Grouped样式中包含了额外的分割线,那么这种样式的改变就没有意义了。
非常好的方法,简单易行,快速解决问题!
UITableView显示比在numberOfRowsInSection中指定的行数更多的行,这个问题的出现的原因是因为当UITableView没有足够的数据来填充所有的行时,它会默认显示空白的单元格,这些单元格会显示分隔线。
解决这个问题的方法是通过添加一个尺寸为CGRectZero的footer view来告诉UITableView有一个footer,从而停止显示分隔线。代码如下:
[tableView setTableFooterView:[[UIView alloc] initWithFrame:CGRectZero]]
这样做的效果是告诉UITableView有一个footer,但是由于footer的frame是CGRectZero,所以不会显示任何内容,视觉效果就是分隔线停止显示。
这样做可以解决显示多余单元格的问题,而且可以显示出section header的灰色背景。
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方法中指定的行数更多的行的问题。