如何在UITableView中删除空单元格?

时间:2013-01-25 10:45:11

标签: ios objective-c uitableview

我正在尝试显示包含一些数据的简单UITableView。我希望设置UITableView的静态高度,以便它不会在表的末尾显示空单元格。我该怎么做?

代码:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    NSLog(@"%d", [arr count]);
    return [arr count];
}

10 个答案:

答案 0 :(得分:846)

设置零高度表页脚视图(可能在您的viewDidLoad方法中),如下所示:

<强>夫特:

tableView.tableFooterView = UIView()

<强>目标-C:

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

因为该表认为有一个页脚要显示,所以除了您明确要求的单元格外,它不会显示任何单元格。

界面构建器专家:

如果您使用的是 xib / Storyboard ,则可以将UIView(高度为0pt)拖到UITableView的底部。

答案 1 :(得分:99)

Swift 3语法:

tableView.tableFooterView = UIView(frame: .zero)

Swift语法:&lt; 2.0

tableView.tableFooterView = UIView(frame: CGRect.zeroRect)

Swift 2.0语法:

tableView.tableFooterView = UIView(frame: CGRect.zero)

答案 2 :(得分:59)

在故事板中,选择UITableView,然后将属性样式从Plain修改为Grouped

答案 3 :(得分:14)

在Xcode 6.1上使用swift实现

self.tableView.tableFooterView = UIView(frame: CGRectZero)
self.tableView.tableFooterView?.hidden = true

第二行代码不会对演示文稿产生任何影响,您可以使用它来检查是否隐藏。

从此链接中获取答案 Fail to hide empty cells in UITableView Swift

答案 4 :(得分:11)

我现在无法添加评论,因此将其添加为答案。

@Andy的答案很好,使用以下代码行可以获得相同的结果:

tableView.tableFooterView = [UIView new];

'new'方法属于NSObject类,并为alloc调用initUIView方法。

答案 5 :(得分:6)

我尝试了代码:

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

viewDidLoad 部分,xcode6显示警告。我放了一个“自我”。在它面前,现在它工作正常。所以我使用的工作代码是:

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

答案 6 :(得分:2)

或者您可以调用tableView方法将页脚高度设置为1磅,它将添加最后一行,但您也可以通过设置页脚背景颜色来隐藏它。

代码:

$scope.$on('dropdown:close', function (event, data) {
   $scope.$apply(function() {
      if($scope.open) { //only close when it is open
        $scope.open = !$scope.open;
      }
    });
});

looks like last line

答案 7 :(得分:1)

override func viewWillAppear(animated: Bool) {
    self.tableView.tableFooterView = UIView(frame: CGRect.zeroRect)

/// OR 

    self.tableView.tableFooterView = UIView()
}

答案 8 :(得分:1)

使用UITableViewController

接受的解决方案将改变TableViewCell的高度。要解决此问题,请执行以下步骤:

  1. ViewDidLoad方法中编写下面给出的代码段。

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

  2. TableViewClass.m文件中添加以下方法。

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
    {
        return (cell height set on storyboard); 
    }
    
  3. 那就是它。您可以构建和运行项目。

答案 9 :(得分:0)

在以下方法中:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (([array count]*65) > [UIScreen mainScreen].bounds.size.height - 66)
    {
        Table.frame = CGRectMake(0, 66, self.view.frame.size.width, [array count]*65)); 
    }
    else
    {
        Table.frame = CGRectMake(0, 66, self.view.frame.size.width, [UIScreen mainScreen].bounds.size.height - 66);
    }
    return [array count];
}

这里65是单元格的高度,66是UIViewController中导航栏的高度。