如何隐藏UITableView中的空行,并根据非空行更改Uitableview的高度
我有我的UITableView
几个问题。
-
当我在我的页面上添加一个
UITableview
,默认情况下它会产生一些固定数量的行,即使我把段的行数设置为1
。 所有的行都出现在第一行之外, 并且都是空行。 所以,我想隐藏UItableview
中的所有空行。 -
基于非空行,我想改变我的
UItableView
的高度。
你确定你正在使用UITableViewStyleGrouped
风格?
因为在默认情况下它被设置为UITableViewStylePlain
,它在显示填充的单元格之后也显示空的单元格。
新的答案
在Swift 2.2,3.0及更高版本中,执行以下操作:
tableView.tableFooterView = UIView()
老解答如下。 KEPT的重要性。
如果您必须使用UITableViewStylePlain
,并且不使用footerView作为其他任何内容,则可以使用以下半脏解决scheme(如果已启用 ARC):
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { UIView *view = [[UIView alloc] init]; return view; }
如果您禁用 ARC,请使用以下命令:
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { UIView *view = [[[UIView alloc] init] autorelease]; return view; }
这会创build一个不可见的footerView,它会在最后一个填充数据的单元格之后立即出现。
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { return 0.01f; }
和iOS 7
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
我通过使用与表背景相同的背景颜色创build一个简单的UIView作为页脚视图来解决问题:
(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)] autorelease]; view.backgroundColor = [UIColor whiteColor]; return view; }
也许你必须在你的表格视图中禁用滚动。
如果你的tableview有多个部分,你可以尝试使用这个:
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { if (section == tableView.numberOfSections - 1) { return [UIView new]; } return nil; } - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { if (section == tableView.numberOfSections - 1) { return 1; } return 0; }
- (void) viewDidLoad { [super viewDidLoad]; self.tableView.tableFooterView = [[[UIView alloc] init] autorelease]; }
这也可以通过Interface Builder完成。 只需将一个1像素高的UIView作为页脚添加到UITableView即可。 它基本上和大多数答案一样,但是在视图中保留了一些特定的UI,而不是在视图控制器中。
[self.SomeTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
如果UITableView
是空的,使用这个来摆脱这些行。
在返回行数的方法中,dynamic指定自己的count
。 例如,如果你要用一个名为arrayForRows:
的NSArray
来填充表arrayForRows:
return [arrayForRows count]; // inside the method which returns the number of rows.
上面是一个简单的例子,用一个数组作为数据源填充表。 没有空行。 根据填充表格的数组中的项目count
,只有很多行显示在表格中。
我认为你的意思是表格中该行的高度。 您可以使用以下方法玩弄行的高度:
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
编辑:啊,现在我得到你想要实现的。 你试图避免显示与这些分隔线分开的空行是正确的? 看到这个职位:
如何在UITableView中显示零行的表
伯恩答案中有一点隐藏 如果你想隐藏在一个普通的tableview中有多个部分的底部空行,使用这个答案: