表格视图在它上面的视图下滚动而不是它

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 + 视图)在表格的标题部分。

以上是关于表格视图在它上面的视图下滚动而不是它的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止 UIView 使用 tableview 滚动?

隐藏或显示表格视图

根据滚动视图上的内容增加表格视图高度

当 UITableView 开始滚动时,动画视图

滚动单元格时表格视图设置消失

带有标签栏的滚动视图