直接在导航栏下方滚动表格视图单元格?

Posted

技术标签:

【中文标题】直接在导航栏下方滚动表格视图单元格?【英文标题】:Scroll tableview cell directly beneath the navigation bar? 【发布时间】:2014-12-13 17:18:05 【问题描述】:

我有一个表格视图。点击时,一个单元格会展开为一个表单,我希望该单元格向上滚动以在导航栏下方开始。我如何做到这一点?

这里是开始状态:

目前,点击后:

这就是我想要的:

【问题讨论】:

【参考方案1】:

你需要这样的东西:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    // Perform cell change height code here
    // ...

    // After that scroll to this cell
    CGFloat sectionHeaderHeight = [self tableView:tableView heightForHeaderInSection:indexPath.section];
    CGRect cellFrame = [tableView rectForRowAtIndexPath:indexPath];
    [tableView setContentOffset:CGPointMake(0, cellFrame.origin.y - sectionHeaderHeight) animated:YES];

【讨论】:

是的,就像 Vitaly 所说,您需要这样的解决方案。 -setContentOffset 部分至关重要。 这种方法可行,但是要将末尾的单元格带到顶部,您需要添加一个 contentInset,您可能希望在完成单元格位于顶部后将其删除。 @StefanKendall 你说得对,有两种方法可以实现这一点 - 如你所说,添加底部内容插入,或者检查表格内容大小末尾的单元格框架并适当地纠正内容偏移【参考方案2】:

scrollToRowAtIndexPath...scrollToNearestSelectedRow... 都采用“滚动位置”参数,允许选择转到表格视图的顶部、中间或底部。那应该给你你想要的。

【讨论】:

scrollToRow 将单元​​格放在导航栏下方。 哦,即使调整了滚动视图上的插图?当您不调整单元格大小时,它会这样做吗?听起来像一个错误。

以上是关于直接在导航栏下方滚动表格视图单元格?的主要内容,如果未能解决你的问题,请参考以下文章

从带有搜索栏的表格单元格创建模式视图时,无法在导航栏中创建后退按钮

带有自定义 UITextView 单元格的 TableView 将导航栏滚动到屏幕外

iOS 通过故事板将 UIView 锁定在导航栏下方和 UITableView 上方

快速在表格视图中插入单元格

停止导航栏与表格一起滚动

iOS 11 导航栏滚动