UITableView显示的行数多于numberOfRowsInSection中指定的行数:

时间:2012-05-27 04:03:02

标签: iphone objective-c ios uitableview

我希望我的tableView显示包含文本的6行,在本例中为“Example”。据我所知,我已正确设置numberOfSectionsInTableView:numberOfRowsInSection:。请参阅下面的示例代码:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
   // Return the number of sections.
   return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
  // Return the number of rows in the 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行的行?

9 个答案:

答案 0 :(得分:57)

执行此操作的generally accepted way是添加框架大小为CGRectZero的页脚视图,如下所示:

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

这样做是告诉表格有一个页脚,因此它停止显示分隔线。但是,由于页脚有一个CGRectZero作为其框架,因此不会显示任何内容,因此视觉效果是分隔符只是停止。

答案 1 :(得分:21)

Swift 版本

最简单的方法是设置tableFooterView属性:

override func viewDidLoad() {
    super.viewDidLoad()
    // This will remove extra separators from tableview
    self.tableView.tableFooterView = UIView(frame: CGRect.zero)
}

答案 2 :(得分:8)

这是因为你的表视图高度。你写的天气

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

//返回该部分中的行数。   返回6; }

但它的显示行根据表视图大小。如果你不想显示这个额外的行,那么使 UITableView样式平原分组。

答案 3 :(得分:5)

简短回答..

self.tableView.tableFooterView = [UIView new];

答案 4 :(得分:0)

您可以采取以下措施:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:7 inSection:0];
[self.mytableView cellForRowAtIndexPath:indexPath].hidden = YES;

我确信有更好的方法,但这是我想到的第一件事。

答案 5 :(得分:0)

如果您指的是最后一行下方出现的浅灰色线条,那么这只是UITableView绘制行分隔符的默认方式。

您可以尝试更改Interface Builder中的分隔符样式(请参阅下面的图像),看看其中一个可能更符合您的喜好。

enter image description here enter image description here

答案 6 :(得分:0)

你没有说出你想要看到的最后一行。如果您只想查看窗口背景,那么只需将表视图嵌入到UIView中,该视图足够高,可以显示您想要查看的行数。如果要在不滚动的情况下查看更多行,则必须根据行数调整包含视图的大小。

答案 7 :(得分:-1)

要以编程方式将其删除,请使用以下命令: [yourTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];

答案 8 :(得分:-1)

要容易得多:

  1. 返回numberOfSections +1
  2. 在最后一节中返回0行

这很简单!