【发布时间】:2019-03-21 08:59:32
【问题描述】:
我有一个加载更多的表格视图。当用户按两次标签栏项目(如 twitter、instagram)时,我想添加滚动到顶部功能。
这是我在用户点击两次标签栏项目时的代码。
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
if previousController == viewController {
if let navVC = viewController as? UINavigationController, let vc = navVC.viewControllers.first as? AssistantMainViewController {
if vc.isViewLoaded && (vc.view.window != nil) {
// viewController is visible
vc.tableView.setContentOffset(CGPoint(x: 0, y: -173), animated: true)
}
}
}
previousController = viewController
}
tableview 首次加载时效果很好。问题是当我将更多单元格加载到我的表格视图并滚动到顶部时,表格视图不会滚动到顶部它卡在某个地方的中间。其他奇怪的事情是,如果我在加载更多内容后手动滚动到顶部,标签栏项目会正确滚动表格视图,直到加载更多单元格。
在加载更多动作时,应用程序从服务器获取更多内容并将它们添加到数组并调用 tableview.reloadData()
adviceDataSource.loadMoreContent(beforeDay: beforeDate, success: {feedCount in
if feedCount == 0 {
self.didGetLastPage = true
}
self.tableView.reloadData()
self.tableView.layoutSubviews()
self.isRunningRequest = false
}, error: { (errorString, statusCode) in
self.isRunningRequest = false
}) { (MoyaError) in
self.isRunningRequest = false
}
问题可能是当我加载更多单元格时,tableview 不知道它的新内容大小。顺便说一下,当点击状态栏 tableview 完美滚动到顶部时。如果你知道用户点击状态栏时调用的函数,那对我来说是完美的。
我已经工作和搜索了 2 天,有什么帮助吗?
谢谢!
【问题讨论】:
-
您是否尝试过使用
tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .top, animated: true)? -
我已经尝试过了,但我的 tableview 单元格没有从屏幕顶部开始,所以我需要处理内容偏移,但如果没有解决方案,我必须使用 scrollToRow。谢谢!
-
你试过
scrollRectToVisible(_:animated:)吗? -
它也不能正常工作@OmarChaabouni
标签: ios swift uitableview