点击当前导航 Controller 的标签栏图标已经将用户返回到 Root View ,但是如果他们向下滚动,如果他们再次点击它我希望它滚动到顶部(与点击状态相同的效果酒吧)。我该怎么做?
一个很好的例子是 Instagram 的 feed,向下滚动然后点击标签栏中的主页图标可以滚动回到顶部。
滚动回到顶部很容易,但将它连接到标签栏 Controller 是我坚持的问题。
最佳答案
实现 UITabBarControllerDelegate
方法 tabBarController:didSelectViewController:
以在用户选择选项卡时收到通知。再次点击同一个选项卡按钮时也会调用此方法,即使该选项卡已被选中。
实现此 delegate
的好地方可能是您的 AppDelegate
。或者逻辑上“拥有”标签栏 Controller 的对象。
我会声明并实现一个可以在您的 View Controller 上调用的方法来滚动 UICollectionView
。
- (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;
}
关于ios - 点击标签栏滚动到 UITableViewController 的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22392151/