协慌网

登录 贡献 社区

消除 UITableView 下面的多余分隔符

当我将表格视图设置为 4 行时,在填充的行下方仍存在额外的分隔线(或额外的空白单元格)。

我将如何删除这些单元格?

UITableView中的额外分隔线的图像

答案

界面生成器(iOS 9+)

只需将 UIView 拖到表中即可。在情节提要中,它将位于自定义单元格下方的顶部。您可能更喜欢将其命名为 “页脚”。

为了清楚起见,这里以绿色显示,您可能想要清晰的颜色。

请注意,通过调整高度,可以根据需要影响工作台 “底部反弹” 的处理方式。 (高度零通常是可以的)。

在此处输入图片说明


以编程方式执行此操作:

迅速

override func viewDidLoad() {
    super.viewDidLoad()
    self.tableView.tableFooterView = UIView()
}

物镜

iOS 6.1 以上

- (void)viewDidLoad 
{
    [super viewDidLoad];

    // This will remove extra separators from tableview
    self.tableView.tableFooterView = [UIView new];
}

或者,如果您愿意,

self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

过去在 iOS 中:

添加到表视图控制器...

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
     // This will create a "invisible" footer
     return CGFLOAT_MIN;
 }

如果有必要...

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{        
    return [UIView new];

    // If you are not using ARC:
    // return [[UIView new] autorelease];
}

这是不使用分组表样式的另一种方法,您可能不会猜到。在表中添加页眉和页脚(可能一个或另一个都足够,尚未检查)会导致分隔符从填充 / 空白行中消失。

我偶然发现了这一点,因为我想在桌子的顶部和底部留一点空间,以减少点击按钮而不是用肉食的手指触摸桌子的风险。这是一种将空白视图用作页眉和页脚的方法。使用任意高度,您仍然可以消除多余的分隔线。

- (void) addHeaderAndFooter
{
    UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
    v.backgroundColor = [UIColor clearColor];
    [self.myTableView setTableHeaderView:v];
    [self.myTableView setTableFooterView:v];
    [v release];
}

作为对 @Casebash 的响应,我返回了我的应用程序中的代码(iTunes 商店中的 “AcmeLists” 列表管理器...),并将 addHeaderAndFooter 方法短路以进行验证。没有它,我将有多余的行分隔符。有了代码,我在此窗口快照中看到了什么:没有表行分隔符 picture 。所以我不确定为什么它对您不起作用。而且,对我而言,在表格视图上具有任何自定义页脚都必须停止为其下方的空白行绘制行分隔符。那太可怕了。作为参考,我查看了表中行多于在屏幕上无法查看的表,然后查看了具有两行的表。在这两种情况下,都没有多余的分隔符。

可能实际上并未添加您的自定义视图。要进行检查,请将背景色设置为clearColor以外的其他颜色,例如[UIColor redColor] 。如果您在表格底部没有看到一些红色的条形,则说明您的页脚未设置。

在 Swift中的 UITableView 中为空行删除多余的分隔线

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    self.yourTableview.tableFooterView = UIView()
}