ios - 点击标签栏滚动到 UITableViewController 的顶部

标签 ios objective-c iphone uitableview uitabbarcontroller

点击当前导航 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/

相关文章:

ios - 如何从 NSString 末尾删除字符直到 "/"

c++ - Cocos2dx 动画(不使用过时的方法)

ios - 为什么在主队列更新 UI 后私有(private)队列调度 _async 更新 UI?

iphone - 如何在WebView中读取Resource文件夹子文件夹中的PDF文件?

objective-c - 如何在一个 if 语句中使用多个项目?

ios - TableViewController 不显示表格信息

ios - LARSAdController 中每次出现 "(Class)class"的预期标识符

iphone - 在 iOS 中创建一个连续的后台线程

iPhone异步文件加载?

iPhone应用程序: Overall Application Hierarchy & Architecture