2015-12-28 15 views
0

我想让它如此,当用户第二次点击标签栏项目时,它们会自动滚动到当前屏幕的顶部。第二次点击自定义标签栏时滚动到视图顶部:Objective-C

我有一个自定义标签栏视图用下面的代码到视图之间切换:

- (IBAction)onTabSelectionChange:(id)sender { 
    UIButton *btn = (UIButton*)sender; 
    previousIndex = currentIndex; 
    currentIndex = btn.tag; 

    if (btn.tag == previousIndex){ 
     // This is where the code should probably go? 
    } else { 
     if (previousIndex != 0){ 
      UIButton *btnpreviousIndex = (UIButton*)[tabView viewWithTag:previousIndex]; 

      if (btnpreviousIndex != nil && previousIndex != -1){ 
       [btnpreviousIndex setSelected:NO]; 
      } 
      [btn setSelected:YES]; 
     } 
    } 
    appDelegate.currentTab = currentIndex; 

    switch (currentIndex) { 
     case TABHOME: { 
      UINavigationController *navController = [appDelegate.arrViewControllers objectAtIndex:0]; 
      navController.navigationBarHidden = YES; 
      [navController popToRootViewControllerAnimated:NO]; 
      [self presentThisView: navController]; 
     } 
      break; 
     case TABTIMELINE: { 
      UINavigationController *navController = [appDelegate.arrViewControllers objectAtIndex:1]; 
      [self presentThisView: navController]; 
     } 
      break; 
     case TABNOTIFICATION: { 
      UINavigationController *navController = [appDelegate.arrViewControllers objectAtIndex:2]; 
      [self presentThisView: navController]; 
      break; 
     } 
     case TABMISCELLANEOUS: { 
      UINavigationController *navController = [appDelegate.arrViewControllers objectAtIndex:3]; 
      [self presentThisView: navController]; 
      break; 
     } 
     default: 
      break; 
    } 
} 

预先感谢您的帮助!

回答

1

如果它是一个滚动视图则是你可以只是把这个代码在你指定的地方:

[scrollView setContentOffset:CGPointZero animated:YES]; 

更新:

您需要将当前标签页索引访问视图控制器和那么你可以得到它里面的CollectionView做:

[self.collectionView setContentOffset:CGPointMake(0.0f,0.0f)]; 

真的是你应该实现UITabBarControllerDelegate,把你的当前代码的方法

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController*)viewController { 

你知道什么是以前和选定的视图控制器,然后还可以访问集合视图中,我建议这种方式。

+0

这是一个collectionView,它告诉我没有类选择器的方法'setContentOffset' – jape

+0

查看更新的答案 –

0

您可以使用此方法来滚动到你想要的任何的CollectionView项目,

- (void)scrollToItemAtIndexPath:(NSIndexPath *)indexPath 
       atScrollPosition:(UICollectionViewScrollPosition)scrollPosition 
         animated:(BOOL)animated 

或者你也可以使用,如果你想返回到集合的开始[collectionView setContentOffset:CGPointZero animated:YES];

,你可以简单地使用CGPointZero

相关问题