Popover Segue中的UITableView滚动位置

我的iPad应用程序中的按钮上连接了一个弹出窗口。弹出窗口显示一个NavigationController,其中嵌入了TableViewController(所有设置都使用情节提要)。表格视图控制器正在显示一个书签列表,其想法是用户可以选择一个,弹出窗口消失,然后应用书签。这一切都很好,但是,当用户打开弹出窗口时,表视图始终滚动到最顶部(我假设这是因为视图控制器每次都是从头开始创建的;是否可以更改此方法?) 。我希望列表保持滚动到弹出窗口关闭时的位置。

我在这里阅读了许多文章,介绍了如何解决此问题,这些内容基本上都包括在viewWillDisappear中保存内容偏移量(或第一个/最后一个可见项),然后滚动表格在viewWillAppear中查看。当我这样做时,表格视图会滚动,但不会滚动到正确的位置。到目前为止,我还无法确定视图最终滚动的量的押韵或原因。

我尝试强制视图先布局,以便在滚动之前正确设置高度,但这似乎没有效果。

如果我将滚动代码放入viewDidAppear中,那么它将滚动到正确的位置,但用户可以看到视图跳转。对我来说,这表示保存的内容偏移量是正确的,问题在于尝试在视图加载完成之前设置内容偏移量。

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    //This appears to have no effect.
    tableView.setNeedsLayout()
    tableView.layoutIfNeeded()

    tableView.setContentOffset(BookmarksTableViewController.scrollPos,animated: false)
}

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    //Uncommenting this will cause the view to scroll to the correct position,but after the table view is visible.
    //tableView.setContentOffset(BookmarksTableViewController.scrollPos,animated: false)
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    BookmarksTableViewController.scrollPos = tableView.contentOffset
}
nikoliu1 回答:Popover Segue中的UITableView滚动位置

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2688021.html

大家都在问