如何在UITableView中隐藏空行并根据非空行更改Uitableview的高度

sbm*_*dav 61 uitableview ios

我有几个问题UITableView.

  1. 当我UITableview在我的页面上添加一个时,默认情况下它会显示一些固定数量的行,即使我在section中设置了行数1.除第一行外,所有行都显示,并且所有行都是空行.所以,我想要隐藏所有空行UItableview.

  2. 基于非空行,我想改变我的高度UItableView.

Art*_*sev 81

新的答案

在Swift 2.2,3.0及更高版本中,执行以下操作:

tableView.tableFooterView = UIView()

以下老答案.KEPT for POSTERITY.

如果必须使用UITableViewStylePlain,并且不使用footerView,则可以使用以下半脏解决方案(如果已启用 ARC).

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    UIView *view = [[UIView alloc] init];

    return view;
}
Run Code Online (Sandbox Code Playgroud)

如果禁用 ARC ,请使用以下命令:

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    UIView *view = [[[UIView alloc] init] autorelease];

    return view;
}
Run Code Online (Sandbox Code Playgroud)

这会创建一个不可见的footerView,它会在最后一个数据填充的单元格后立即出现.

  • **SWIFT 3.0**适用于`tableView.tableFooterView = UIView()` (2认同)

San*_*niv 53

你确定你在使用UITableViewStyleGrouped风格?

因为默认情况下它被设置为UITableViewStylePlain在显示填充单元格后也显示空单元格.


小智 34

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section 
 { 
     return 0.01f;
 }
Run Code Online (Sandbox Code Playgroud)

适用于iOS 7

 self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
Run Code Online (Sandbox Code Playgroud)

  • 这应该是iOS 7中接受的答案. (3认同)

小智 18

我通过创建一个简单的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;
}
Run Code Online (Sandbox Code Playgroud)

也许你必须在表格视图中禁用滚动.


cod*_*yko 11

如果您的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;
}
Run Code Online (Sandbox Code Playgroud)


yun*_*nas 11

- (void) viewDidLoad
{
  [super viewDidLoad];
  self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];
}
Run Code Online (Sandbox Code Playgroud)


Mat*_*ker 6

这也可以通过Interface Builder完成.只需将1像素高的UIView作为页脚添加到UITableView.它与此处的大多数答案基本相同,但它在视图中保留了一些UI细节,而不是在视图控制器中.

在此输入图像描述


Cod*_*uru 6

[self.SomeTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
Run Code Online (Sandbox Code Playgroud)

如果UITableView为空,则使用此选项删除行.