uitableview - 在iphone SDK,消除UITableView 分隔符下面?

  显示原文与译文双语对照的内容

当我设置带有 4行的sku时,在 tableview ( 或者额外的空白单元格) 下面还有额外的分隔线

如何删除这些单元格( 在本例中,我只需要 4个顶部单元格)


tblView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] bounds] style:UITableViewStylePlain];
[tblView setDelegate:self];
[tblView setDataSource:self];
[tblView setSeparatorStyle: UITableViewCellSeparatorStyleSingleLine];

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
 return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
 return 4;
}

- (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] autorelease];
 }

 int row = [indexPath row];

 return cell;
}

时间:

用于 iOS 6.1 +

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


- (void)viewDidLoad 
{
 [super viewDidLoad];

//This will remove extra separators from tableview
 self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
}

或者使用 Storyboard,将 View 拖到 Table View的底部以创建一个 tableFooterView 。 将 tableFooterView的框架设置为 0的高度。

对于早期版本

你可以将它添加到 TableViewController ( 这适用于任意数量的部分):


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

要是还嫌不够:,添加下面的代码


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

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

这是另一种方法来实现组合的表格样式,你可能不会猜测。 添加 页眉和页脚 表格的页脚 ( 可能一个或者另一个足够,没有选中) 使分隔符从填充/空白行中消失。

最充实fingers,我碰巧发现这个因为我希望获得一种空间小的顶部和底部的表,以减小击球按钮而不是表中菌中的风险, 下面是将空白视图作为页眉和页脚的方法。 使用你喜欢的任意高度,仍然可以消除额外分隔线。


- (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,,我回到了我的应用程序("acmelists"在iTunes商店中列出经理。。) 中的代码,并使用 short-circuited addHeaderAndFooter方法验证了。 没有它的,我有多余的行分隔符;使用代码,我在窗口捕捉中看到了你看到的东西:没有表格行分隔符图片 。 所以我不确定为什么它不能为你工作。 此外,对我来说,在表格视图中有任何自定义页脚必须停止为它的下面的空行绘制行分隔符。 具有两个rows,那将是可怕的。哪里有的行数超过可能是屏幕上看,作为参考,我查看了表然后或者位子。 在这两种情况下,没有多余的分隔符。

可能你的自定义视图并未实际添加。 要检查,请将背景颜色设置为 clearColor,比如,[UIColor redColor] 。 如果在表格的底部没有看到一些红色的长条,你的页脚没有被设置。

我愿意向 wkw 答案:

只添加高度为 0的页脚即可。 ( 在 sdk 4.2,4.4.1上测试)


- (void) addFooter
{
 UIView *v = [[UIView alloc] initWithFrame:CGRectZero];

 [self.myTableView setTableFooterView:v];

 [v release];
}

或者更简单的一点- 在你设置的地方,添加此行:


//change height value if extra space is needed at the bottom.
[_tableView setTableFooterView:[[[UIView alloc] initWithFrame:CGRectMake(0,0,0,0)] autorelease]];

或者甚至 simplier - 只需删除任何分隔符:


[_tableView setTableFooterView:[[UIView new] autorelease]];

感谢 wkw: )

在 Swift ( ios8 ) 中删除UITableView中空行的额外分隔线


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

试试这个它对我有用


- (void) viewDidLoad
{
 [super viewDidLoad];

//Without ARC
//self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];

//With ARC, tried on Xcode 5
 self.tableView.tableFooterView = [UIView new];
}

我知道这个问题已经被接受了,但是我在这里放置了不同的方法来隐藏 UITableView的额外分隔线。

你可以隐藏分隔线的tableView 标准,并在每个单元格的顶部添加自定义行。

更新:

最简单的方法添加自定义分隔符是添加简单的px 1 UIView 行中的索引


UIView* separatorLineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 1)];
separatorLineView.backgroundColor = [UIColor grayColor];///may be here is clearColor;
[cell.contentView addSubview:separatorLineView];

或者


 self.tblView=[[UITableView alloc] initWithFrame:CGRectMake(0,0,320,370) style:UITableViewStylePlain];
 self.tblView.delegate=self;
 self.tblView.dataSource=self;
 [self.view addSubview:self.tblView];

 UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
 v.backgroundColor = [UIColor clearColor];
 [self.tblView setTableHeaderView:v];
 [self.tblView setTableFooterView:v];
 [v release];

或者


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

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
//To"clear" the footer view
 return [[UIView new] autorelease];
}

我喜欢的最好的最简单的方式


self.tableView.tableFooterView = [[UIView alloc] init];

尝试任何一个;

哥斯达黎加:可以使一个全局修改添加到表中的推进J 。解决方案通过将下面的代码行:


[[UITableView appearance] setTableFooterView:[[UIView alloc] initWithFrame:CGRectZero]];

在第一个poosible方法内( 通常在AppDelegate中,在: application:didFinishLaunchingWithOptions: 方法) 。

...