0

Мое приложение имеет четыре вкладки, которые отображают различную информацию.Переход на другой экран, когда табуляция выбрана, когда пользователь уже зарегистрировался на другой вкладке-iOS

На втором контроллере представления вкладки У меня есть одна кнопка позволяет назвать его как button1 в этом button1 действия я осуществлять навигацию SignInViewController экрана и в третьем контроллере представления вкладка loginViewController.

Здесь как для SignInViewController, так и для loginViewController экран такой же, то есть пользователь может войти в приложение как в ViewController.

Вот что я хочу именно, если я вошел в SignInViewController тогда, когда я нажимаю на третьем TabBarItem View Controller должен непосредственно перемещаться к следующему экрану loginViewController т.е. к этому следующему экрану я назвал его как AccountViewController. Я пробовал код ниже в классе tabbarcontroller, но его не работает.

Пожалуйста, помогите мне в этом. Спасибо заранее.

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

     if (tabBarController.selectedIndex == 2){ 

     { 

      if (![[[NSUserDefaults standardUserDefaults]objectForKey:@"SigninStatus"] isEqualToString:@"SigninSuccess"]){ 

       UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
       LoginViewController *logInVc = [story instantiateViewControllerWithIdentifier:@"LoginViewController"]; 
       [self.navigationController pushViewController:logInVc animated:YES]; 
      } 
      else 
      { 

       UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
       AccountViewController *accountVc = [story instantiateViewControllerWithIdentifier:@"AccountViewController"]; 
       [self.navigationController pushViewController:accountVc animated:YES]; 

      } 
     } 
    } 
} 
+0

Будет ли еще условие? Вы это проверили? – Dhanunjaya

+0

да, это будет еще условие, что я сохранил точки останова, также я проверил пошаговое кодирование мудрым, нет проблем, но в симуляторе его не перемещается .. – Sajida

+0

Вы имеете в виду, когда вы нажимаете на третий элемент из Tabbar «Если пользователь уже вошел в систему «AccountViewcontroller должен быть нажат, и в вашем случае он не будет вдавлен правильно? –

ответ

0

1.Is ваш loginViewController встроен в UINavigationController?

-Если не чем вставлять его в UINavigationController

2.Create Нажмите Segue от loginViewController к AccountViewController например, Идентификатор Segue: segueLoginToAccount

3.Now, когда пользователь нажимает на 3 пункта панели вкладок, создать чек viewDidLoad на loginViewController, чтобы увидеть, был ли пользователь уже вошел в систему или нет:

-(void)viewDidLoad { 
    [super viewDidLoad]; 

    if ([[[NSUserDefaults standardUserDefaults]objectForKey:@"SigninStatus"] isEqualToString:@"SigninSuccess"]) { 
     //already logged in, push to Account View 
     [self performSegueWithIdentifier:@"segueLoginToAccount" sender:nil]; 
    }//else user will stay on Login View 
} 

Нет необходимости использовать tabBarController didSelectViewController: способ.

0

Первое, что нужно - если цель обоих viewcontroller одинакова, то почему разные контроллеры представлений для обеих кнопок? Вы должны использовать same viewcontroller для обоих случаев.

Вторая вещь, которую вы можете сохранить flag or status в NSUserDefaults, которая содержит информацию о пользователе, зарегистрирована или нет.

Тогда просто поставить if - else условие на кнопку мыши, что если пользователь вошел в то instantiate следующий контроллер представления вместо loginVC или если пользователь не вошел в систему, то показать loginVC это все.

Update:

Как вы спросили в комментариях, что вы хотите, это по щелчку TabBar, то вы должны subclass - UITabBarController and set it to your UITabBarController in iterface builder и в этом классе вы должны реализовать метод делегата - didSelectItem и в этой проверке метод из userdefaults, что пользователь вход в систему или нет, и соответственно установите контроллер просмотра!

См. this SO post для получения более подробной информации!

+0

Спасибо за ur response.its не о кнопке now.I хочу этот сценарий при нажатии TabBarItem – Sajida

+0

проверить мое обновление в ответ! – Lion

0

Вам необходимо установить контроллер 3-го уровня в NavigationController. Это позволит навигационному стеклу управлять контроллером.

UIViewController * loginviewcontroller = [UIViewController alloc] init];

UINavigationController * navController = [[UINavigationController alloc] initWithRootViewController: loginviewcontroller];

Назначить этот navController в табеле.

например:

NSMutableArray * viewControllersList = [[NSMutableArray Alloc] инициализации];

[viewControllersList addObject: navController];

[tabBarController setTabBarControllers: viewControllersList];

Via видеоредактора вы можете встроить контроллер навигации как этого

enter image description here

Надеется, что это поможет.

+0

Спасибо, Сагар за ур-ответ. 3-й контроллер зрения означает, где я должен? и где я должен разместить этот код? – Sajida

+0

Обновленный ответ с некоторыми подробностями. –

+0

Вы имеете в виду, что контроллер 3-го представления означает loginviewcontroller? – Sajida

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

  • Нет связанных вопросов^_^