这里是来自各种来源的代码,用于检测第二次是否点按标签栏。
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
var previousController: UIViewController? = nil
if previousController == viewController {
// the same tab was tapped a second time
print("scroll to top")
if viewController.responds(to: #selector(self.scrollToTop)) {
viewController.perform(#selector(self.scrollToTop))
}
}
previousController = viewController
}
func scrollToTop() {
self.tableView.contentOffset = CGPoint(x: CGFloat(0), y: CGFloat(0 - self.tableView.contentInset.top))
}
当我再次点击标签栏时,打印("滚动到顶部")不会被调用。我的代码可能会出现什么问题?
答案 0 :(得分:0)
这可能是因为你得到了nil,所以如果条件
则不会进入 var previousController: UIViewController? = nil
答案 1 :(得分:0)
您应该声明' previousController'作为您正在检测水龙头的那个班级的一个实例。
var previousController: UIViewController? = nil
每次点击标签栏时,您的上述代码行将始终初始化为nil,并且条件永远不会为真。