【问题标题】:Maintain the table view's scroll position保持表格视图的滚动位置
【发布时间】:2018-04-08 18:01:09
【问题描述】:

在我的应用程序中,我有一个食物列表,它会像这样从侧面菜单中弹出

点击任何索引后,它会转到显示相应详细信息的食物屏幕。这个火腿图标启动侧边菜单。我想要的是当用户说选择列表中的第 28 个或第 30 个索引时。当他再次单击 hamIcon 时,他应该回到他离开的相同滚动位置,目前,它会将用户带回顶部,我该如何实现。我浏览了堆栈,我只能找到问题的 obj-c 版本。而且我根本不知道 obj-c。我还遇到了一个第三方库,但我不想为这样一个微不足道的任务这样做。请指引我正确的方向。

【问题讨论】:

    标签: ios uitableview swift3 xcode9 swift4


    【解决方案1】:

    您可以简单地将最后一次点击的索引路径存储在 didSelectRowAtIndexPath 中。

    只需从 viewWillApperar 调用 scrollToRowAtIndexPath 方法。

            [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
    

    希望对您有所帮助!

    【讨论】:

    • 在viewWillAppear中实现上述方案,完全依赖侧边菜单的实现。如果只是简单地对视图进行动画处理,则不会总是调用 viewWillAppear。如果每次用户点击汉堡包时重新初始化 sideMenu 视图控制器,它将起作用。如果你只初始化一次,你应该考虑在汉堡的水龙头上应用上面的逻辑。
    • 这个 scrollToRowAtIndexPath 会占用存储的索引对吗?我可以将其存储为let cell = tableView.cellForRowAt(indexpath),但我如何将其分配给 scrollToRowAtIndexPath cz 它无法识别在 didSelectRowAt 中定义的单元格
    猜你喜欢
    • 2010-09-24
    • 2016-12-03
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多