使用原型单元格,我需要在表格视图的底部添加页脚视图,这样当用户滚动到表格视图的底部时,用户就可以看到此页脚视图。因此,创建了具有一个屏幕,表视图和两个原型单元的演示项目。寻找一种方法如何使用Interface Builder将一些视图拖放到表下方。问题是它看起来像是放在表格视图内容之外,所以我看到页脚但是我无法滚动到它(在表格视图的底部只能看到页脚视图的一小部分)。
我知道这应该可行,因为已经看到了一个有效的实现,但无法弄清楚我需要添加什么神奇的设置或代码行。
以下是方法:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection: (NSInteger)section {
return 2;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
CGFloat rowHeight = 10;
switch (indexPath.row) {
case 0: {
rowHeight = 376;
break;
}
case 1: {
rowHeight = 105;
break;
}
}
return rowHeight;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
switch (indexPath.row) {
case 0: {
Cell1 *cell1 = [tableView dequeueReusableCellWithIdentifier:@"Cell1" forIndexPath:indexPath];
return cell1;
break;
}
case 1: {
Cell2 *cell2 = [tableView dequeueReusableCellWithIdentifier:@"Cell2" forIndexPath:indexPath];
return cell2;
break;
}
}
return nil;
}
用两个不同高度的单元格制作2行表。 Cell1和Cell2类是UITableViewCell的空子类。
以下是表视图和单元格在界面构建器中的外观:
这是发布后的初始视图:
如果我滚动到底部,这就是我看到的内容:
页脚在那里,但在桌面视图外(滚动内容)。正如您所看到的,默认情况下,表视图会在页脚底部保留大约44px的空间作为页脚。但是,如果我在tableView:heightForFooterInSection中设置页脚高度,则会出现空格。
此外,尝试将此视图拖动并移动到IB中的视图层次结构,因此视图将成为标题视图。在这种情况下,视图在顶部显示为标题视图,但是当滚动到底部时,第二个单元格仅部分显示。它看起来像计算显示原型动态单元所需的空间(为表视图设置了“动态原型”)。如果您向界面构建器添加额外的页脚或标题视图,则单元格的空间较小(如果视图被添加为标题)或页脚未显示。
更新即可。如果我添加此方法,则会出现空格:
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return 50;
}
这是我在这种情况下得到的结果(cell2下面的空格):
UPDATE2 如果禁用自动布局,则会正确显示页脚。
答案 0 :(得分:2)
我认为你错过了以下一行
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return HEIGHT_OF_YOUR_FOOTER_VIEW;
}
修改强>
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
UIView *footer=[[UIView alloc] initWithFrame:CGRectMake(0,0,320.0,50.0)];
footer.layer.backgroundColor = [UIColor orangeColor].CGColor;
return footer;
}
<强>更新强>
答案 1 :(得分:1)
终于找到了解决方案。注意到在禁用自动布局时正确显示了页脚,因此开始查看约束。因此,使用Ctrl + Drag将容器,尾随空格,底部空间和顶部空间的前导空间添加到容器约束到表视图。然而,IB显示关于缺少Y位置约束的红色警告。因此,在从IB建议面板中选择“添加缺失约束”之后,IB添加了另一个系统约束,但页脚仍未正确显示。看起来IB无法为容器系统约束添加正确的顶部空间和底部空间,甚至无法修复它。所以我得到了5个系统约束:
使用Ctrl +从表视图拖动到包含视图的系统约束在我之前的演示中已经有效。但是,这次IB无法为容器添加正确的顶部空间和底部空间,因此顶部空间垂直约束的值为-568。尝试设置为0但它没有奏效。尝试了十次删除所有约束并再次添加它们。同样的结果。
因此,我删除了所有这些垂直(底部和空间)约束,然后选择“添加缺失约束”。和宾果! IB添加了正确的垂直约束,并且正确显示了页脚视图。这是正确的约束应该是什么样子。但是,当我从表视图执行Ctrl + Drag到容器视图时,我仍然不明白为什么IB无法添加正确的约束。