UITableViewController - 在表/移动表上方添加空格

时间:2012-07-21 06:16:42

标签: objective-c uiscrollview uitableview

我需要在UITableViewController中的分组式TableView的顶部(上方)有一个免费区域。什么是顶级? NavigationBar和TableView的SectionTitle之间的区域。

首先,我用了

UIEdgeInsets inset = UIEdgeInsetsMake(60, 0, 0, 0);
self.tableView.contentInset = inset;

这在第一个时刻工作得很好,正是我需要的。但是,如果我向下滚动TableView,视图将移动到新的免费区域。

使用

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

似乎不起作用:(

有什么建议吗?

4 个答案:

答案 0 :(得分:4)

表视图控制器的根视图是表视图,因此您无法在其上方或下方放置内容,因为您没有要添加它们的超级视图。

解决方案是使用UIViewController子类,为此您可以添加任意大小的表视图,其中包含视图的上方和下方。没有太多额外的工作 - 您必须声明您的视图控制器实现委托和数据源协议,并在IB中连接这些插座,除了它与表视图控制器相同。

基本消息 - 您可以拥有一个没有UITableViewController的表视图。

答案 1 :(得分:2)

如果你的桌子是只读的,jrturton就足够了。否则,您还需要将编辑调用从UIViewController传播到随附的UITableView,如下所示:

//In UIViewControler propagate call to tableView property
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
  [super setEditing:editing animated:animated];  
  [self.tableView setEditing:editing animated:animated];
}

答案 2 :(得分:0)

您可以使用table的headerView属性创建一个具有所需大小的视图,并将其放在表格的标题视图中,它将为您提供您真正需要的内容。

您可以使用tableView的-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section委托方法为第一部分添加标题视图。

快乐编码:)

答案 3 :(得分:0)

所以你需要在Table视图上方留出一个空格,滚动时表格视图不会覆盖它?

只是尝试在表视图的顶部添加UILabel,或者在表视图的标题所在的位置添加UITableView,而不是使用表视图。然后使表格视图的坐标从标签的正下方开始。这种方式当你滚动,空间,即;这里的标签始终可见。

这样做的原因是因为为{{1}}定义的所有内容(例如页眉或页脚)始终与表关联,并且无法单独操作。