点击当前导航控制器的标签栏图标已经将用户返回到根视图,但是如果它们向下滚动,如果再次点击它,我希望它滚动到顶部(与点击状态栏相同的效果).我该怎么做?
一个很好的例子是Instagram的Feed,向下滚动然后点击标签栏中的主页图标来滚动回到顶部.
滚动回到顶部很容易,但是将其连接到标签栏控制器是我坚持的.
解决方法
实现UITabBarControllerDelegate方法tabBarController:didSelectViewController:当用户选择选项卡时通知.即使已经选择了该选项卡,当再次点击相同的Tab按钮时也会调用此方法.
实施这个代表的好地方可能是你的AppDelegate.或逻辑上“拥有”标签栏控制器的对象.
我将声明并实现一个可以在视图控制器上调用的方法来滚动集合视图.
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { static UIViewController *prevIoUsController = nil; if (prevIoUsController == viewController) { // the same tab was tapped a second time if ([viewController respondsToSelector:@selector(scrollToTop)]) { [viewController scrollToTop]; } } prevIoUsController = viewController; }