表格视图在它上面的视图下滚动而不是它
Posted
技术标签:
【中文标题】表格视图在它上面的视图下滚动而不是它【英文标题】:table view scrolls under view above it not with it 【发布时间】:2016-04-19 15:46:17 【问题描述】:我在屏幕顶部(导航栏下方)有一个视图。 视图下方是表格视图。
问题是当我向下滚动表格时,它会在屏幕顶部的视图下滚动。 我希望顶部的视图与表格视图一起滚动。
有人可以推荐一些方向吗?
我尝试用谷歌搜索它并没有发现任何有用的信息。我希望我在这里解释得足够好。
【问题讨论】:
【参考方案1】:很容易解决。请尝试将视图作为子视图放入 tableview。您可以在顶部和底部向 TableView 添加视图。添加到 Tableview 的视图将被滚动。
【讨论】:
即使我有表格视图的标题?我试图在表格视图中拉出视图,但我再也看不到了。 奇怪,但它有效。我刚在操场上试过。如果我没记错的话,这种方法在早期版本的 ios 中是行不通的。 天哪,这成功了!我没想到能够做到这一点。谢谢!我将您的答案标记为正确,因为您是第一个提出此建议的人。 现在困扰我的小后续问题:如果我需要隐藏视图怎么办?现在它在表格顶部留下一个空白区域。如何隐藏视图并使表格从视图所在的位置开始? 您可以使用代码中的实例更改视图的高度。它会起作用的。【参考方案2】:您可以在表视图委托中拦截滚动实现 scrollViewDidScroll
方法,并在此方法中更新此覆盖视图的 frame
(或约束,如果您使用 AutoLayout)。
【讨论】:
【参考方案3】:我可以在这里想到两种解决方案:
解决方案 1:在表格中添加一个原型单元格,并将其用作要在表格最顶部显示的视图。然后在您的代码中,您可以在索引 0 处加载该单元格,以确保将其加载到表格的最顶部。
代码示例:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
if(indexPath.row == 0)
TopMostTableCell *tableCell = (TopMostTableCell *)[tableView dequeueReusableCellWithIdentifier:@"TopMostTableCell"];
return tableCell;
else
OtherTableCell *tableCell = (OtherTableCell *)[tableView dequeueReusableCellWithIdentifier:@"OtherTableCell"];
return tableCell;
解决方案 2:将您想要的视图添加到表格的最顶部,您可以滚动到表格标题。
可以通过编码添加视图,也可以加载nib文件。
代码示例:
- (void)viewDidLoad
[super viewDidLoad];
UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 200, 50)];
//loading from nib file
UIView *headFromNib = [[[NSBundle mainBundle] loadNibNamed:@"Header" owner:self options:nil] objectAtIndex:0];
[header setBackgroundColor:[UIColor blackColor]];
_table.tableHeaderView = header;
希望这对您有所帮助。 :)
【讨论】:
感谢您的回答。如果表格有表头,我应该将视图添加到表头还是直接添加到表中? 您应该将其添加到标题中。否则,如果您的标题有单独的布局,并且您希望该视图(您正在谈论)位于表头顶部,那么您不妨加入标题和该视图的布局,然后放置该连接视图( header + 视图)在表格的标题部分。以上是关于表格视图在它上面的视图下滚动而不是它的主要内容,如果未能解决你的问题,请参考以下文章