UITableView的单元格分隔线

5

你好,我是一个新手iOS开发者。我正在开发一个应用程序,其中使用了UITableViewTableView中包含一些带分隔线的单元格和一些不带分隔线的单元格。 请问有没有人可以告诉我如何针对特定的单元格移除分隔线?

cell.separatorInset = UIEdgeInsetsMake(0, 0, 0, cell.bounds.size.width);

上述代码适用于iOS 7。我该如何在iOS 6中实现这个功能呢? 非常感谢您的帮助。

我认为你可以通过调整单元格的框架来覆盖分隔符来实现这一点。不过我不确定是否有更好的方法。 - Dov D.
隐藏tableView的默认分隔线。我的意思是使您的tableView没有任何分隔线,然后添加一个高度为1px的UIView并将其添加到单元格的contentView底部。不要在想要隐藏它的单元格中添加它。 - TheTiger
3个回答

5
您可以在UITableViewCell布局的顶部添加一个背景颜色与所需分隔线相同的UIView,将其高度设为1个像素(与线条相同),宽度设为单元格宽度(cell.frame.size.width)。之后,在cellForRowAtIndexPath中,只需为您不想显示它的单元格设置此属性hidden = YES,对于那些您想要显示的单元格则将hidden 设置为NO。这是一种简单的解决方案,适用于任何iOS版本。但如果您添加自定义分隔符,请不要忘记为所有tableview禁用默认分隔符。

我们不能在cellForRowAtIndexPath中根据需要设置分隔符颜色吗? - Shital Tiwari
当然可以 :)。我只是认为你想让分隔符的颜色保持一致。你的分隔符是一个 UIView,所以只需调用:[yourSeparator setBackgroundColor] - user1744056
我们该如何实现呢?因为我们可以使用tableview对象设置颜色,这样就会反映到所有的分隔线上,不是吗? - Shital Tiwari
看。cellForRowAtIndexPath会为每个单元格调用。因此,您可以在那里放置一个条件:if(cellYouWantToBeWithSeparator){show separator} else {don't} - user1744056
我们只想针对特定单元格进行设置,但是这个设置却应用到了整个表格,即使我们检查了特定的IndexPath。 - Shital Tiwari
@ShitalTiwari 你还应该加上else条件。正如我所说,单元格正在重用。如果只添加 if(..) {//show} 则在第一次滚动后,所有单元格都会带有分隔线。但是如果您添加 if(){//show} else {//hide},则仅为您想要的 indexpath 显示分隔符。 - user1744056

0
为了仅在特定单元格中使用分隔符,您必须为这些单元格绘制分隔线。在我的看法中,将分隔符样式设置为无,然后为所需单元格绘制自定义分隔符。
您可以参考此链接以获取自定义分隔符。基本上,您需要添加一个自定义视图,如下所示:
UIView* separatorLineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 1)];/// change size as you need.

separatorLineView.backgroundColor = [UIColor grayColor];// you can also put image here
[cell.contentView addSubview:separatorLineView];

设置分隔符样式为无,请使用:

     tableView.separatorStyle=UITableViewCellSeparatorStyleNone

这将删除所有单元格的分隔符。而且OP想要:“包含一些带有分隔线的单元格和另一些没有分隔线的单元格”。 - user1744056
亲爱的Alexander,我想要一些带有分隔线的单元格和一些没有分隔线的单元格。 - Shital Tiwari

0

如果您试图更改分隔线的颜色,则有一件事是,如果您想将相邻的单元格作为单个单元格,则这不是正确的方法。因为这只会使UI发生变化。

更好的方法是调整单元格的大小,以便您可以为它们获取“单个单元格点击事件”。

您可以使用代理来实现此目的:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接