因此,我有一个viewController
和一个tableView
,它是从tabBarController
呈现的。如果用户点击tabBarItem
以查看已经显示的视图,我希望tableView
滚动到顶部。我将UITabBarControllerDelegate
设置为viewController
,然后添加了以下方法:
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
if tabBarController.selectedIndex == 0 {
//scroll to the top!
}
}
问题是tableView
滚动到当前视图的顶部 。因此,我尝试添加第二个条件,以确保当前显示的视图是正确的视图,但似乎没有什么是正确的。
TL; DR
如何确定用户正在点击已选择的tabBarItem
?
答案 0 :(得分:2)
您可以使用self.view.window != nil
来确定vc的视图是否已经显示。使用shouldSelect
委托方法,该方法在选择之前被调用。
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
if viewController === self && self.isViewLoaded {
// Please use viewController === self.navigationController
// if self is a child of a UINavigationController. We should
// compare the viewController with a direct child of the
// UITabController
if self.view.window != nil {
print("scroll to top")
} else {
print("Don't scroll to top")
}
}
return true
}