我正在尝试显示包含一些数据的简单UITableView
。我希望设置UITableView
的静态高度,以便它不会在表的末尾显示空单元格。我该怎么做?
代码:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSLog(@"%d", [arr count]);
return [arr count];
}
答案 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
第二行代码不会对演示文稿产生任何影响,您可以使用它来检查是否隐藏。
答案 4 :(得分:11)
我现在无法添加评论,因此将其添加为答案。
@Andy的答案很好,使用以下代码行可以获得相同的结果:
tableView.tableFooterView = [UIView new];
'new'方法属于NSObject
类,并为alloc
调用init
和UIView
方法。
答案 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;
}
});
});
答案 7 :(得分:1)
override func viewWillAppear(animated: Bool) {
self.tableView.tableFooterView = UIView(frame: CGRect.zeroRect)
/// OR
self.tableView.tableFooterView = UIView()
}
答案 8 :(得分:1)
使用UITableViewController
接受的解决方案将改变TableViewCell
的高度。要解决此问题,请执行以下步骤:
在ViewDidLoad
方法中编写下面给出的代码段。
tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
在TableViewClass.m
文件中添加以下方法。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return (cell height set on storyboard);
}
那就是它。您可以构建和运行项目。
答案 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中导航栏的高度。