2015-12-28 1 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 то да, вы можете просто поместить этот код в том месте, вы указали:

[scrollView setContentOffset:CGPointZero animated:YES]; 

Update:

Вы должны получить доступ к контроллеру вида на текущий индекс вкладки и то вы можете получить CollectionView внутри него и сделать:

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

Действительно, вы должны реализовать UITabBarControllerDelegate и поместить текущий код в методе

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

Таким образом, вы знаете, что было в предыдущих и отдельные контроллеры просмотра и затем можно также получить доступ к коллекции вид внутри, как я предложил.

+0

Это коллекцияView, и это говорит мне, что нет метода класса для селектора setContentOffset – jape

+0

См. обновленный ответ –

0

Вы можете использовать этот метод, чтобы перейти к любому CollectionView пункту вы хотите,

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

Или вы можете также использовать, [collectionView setContentOffset:CGPointZero animated:YES];

, если вы хотите, чтобы вернуться к самому началу коллекции, может просто использовать CGPointZero

Смежные вопросы