如何滚动到表格顶部在 swift 4 中查看?



我的代码确实滚动到表视图的顶部,但我选择一行并推送到另一个视图控制器,然后返回并点击选项卡栏图标,它不会滚动到顶部。它在某种程度上向上滚动,但无法正常工作

扩展 UIViewController {

func scrollToTop() {
func scrollToTop(view: UIView?) {
guard let view = view else { return }
switch view {
case let scrollView as UIScrollView:
if scrollView.scrollsToTop == true {
if scrollView.contentOffset.y < -100 {
return
}
scrollView.setContentOffset(CGPoint(x: 0.0, y: -150), animated: true)
return
}
default:
break
}
for subView in view.subviews {
scrollToTop(view: subView)
}
}
scrollToTop(view: view)
}

var isScrolledToTop: Bool {
if self is PaymentsTabController {
return true
}
if self is UITableViewController {
return (self as! UITableViewController).tableView.contentOffset.y == 0
}
for subView in view.subviews {
if let scrollView = subView as? UIScrollView {
return (scrollView.contentOffset.y == 0)
}
}
return true
}

}

extension MainTabBar: UITabBarControllerDelegate {

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
guard let viewControllers = viewControllers else { return false }
if viewController == viewControllers[selectedIndex] {
if let nav = viewController as? UINavigationController {
guard let topController = nav.viewControllers.last else { return true }
if !topController.isScrolledToTop {
topController.scrollToTop()
return false
} else {
nav.popViewController(animated: true)
}
return true
}
}
return true
}

}

试试这个!

tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .bottom, animated: true)

对于 swift4 试试 -

scrollView.setContentOffset(.zero, animated: true)

而不是

scrollView.setContentOffset(CGPoint(x: 0.0, y: -150), animated: true)

最新更新