我的UITableView
有几个问题。
当我在页面上添加UITableview
时,默认会显示一些固定数量的行,
即使我将部分中的行数设置为1
。除第一行外,所有行都显示,和都是空行。所以,我想要隐藏UItableview
中的所有空行。
根据非空行,我想更改UItableView
的高度。
答案 0 :(得分:79)
新答案
在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;
}
如果ARC 已禁用,请使用以下命令:
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
UIView *view = [[[UIView alloc] init] autorelease];
return view;
}
这会创建一个不可见的footerView,它会在最后一个数据填充的单元格后立即显示。
答案 1 :(得分:53)
您确定使用的是UITableViewStyleGrouped
样式吗?
因为默认情况下它设置为UITableViewStylePlain
,在显示填充的单元格后也会显示空单元格。
答案 2 :(得分:34)
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.01f;
}
和iOS 7
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
答案 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;
}
此外,您可能必须在表格视图中禁用滚动。
答案 4 :(得分: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;
}
答案 5 :(得分:11)
- (void) viewDidLoad
{
[super viewDidLoad];
self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];
}
答案 6 :(得分:6)
这也可以通过Interface Builder完成。只需将1像素高的UIView作为页脚添加到UITableView。它与大多数答案基本相同,但它在视图中保留了一些UI细节,而不是在视图控制器中。
答案 7 :(得分:6)
[self.SomeTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
如果UITableView
为空,请使用此选项删除行。
答案 8 :(得分:0)
在返回行数的方法中,动态指定count
。例如,如果您打算使用名为NSArray
arrayForRows:
来填充表格
return [arrayForRows count]; // inside the method which returns the number of rows.
以上是一个使用数组作为数据源填充表的简单示例。没有空行。根据填充表格的数组中的count
项,表中只显示那么多行。
我认为你的意思是表中行的高度。您可以使用以下方法来处理行的高度:
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
编辑:啊现在我得到了你想要实现的目标。您是否试图避免显示用这些分隔线分隔的空行?看这篇文章:
答案 9 :(得分:0)
有点隐藏在伯恩的回答中;如果要在具有多个部分的普通tableview中隐藏到底部空行,请使用以下答案:
答案 10 :(得分:0)
对于Swift:
override func viewWillAppear(animated: Bool) {
self.tableView.tableFooterView = UIView(frame: CGRect.zeroRect)
// OR
self.tableView.tableFooterView = UIView()
}
对于C#:(请不要忘记添加using CoreGraphics;
)
public override void ViewWillAppear(bool animated)
{
base.ViewWillAppear(animated);
this.sampleTableview.TableFooterView = new UIView(frame: CGRect.Empty);
}