Отображение экрана входа в систему как модальное представление - PullRequest
3 голосов
/ 25 июля 2011

Я разрабатываю приложение, которое можно использовать без немедленного входа, но для определенных вкладок требуется вход. Поэтому я хочу, чтобы при каждом открытии этих вкладок окно входа в систему отображалось вверх. Если пользователь нажимает кнопку «Отмена» в представлении входа в систему, модальное окно должно быть закрыто, и оно должно вернуться к тому же представлению, в котором был пользователь ранее. Если вход выполнен успешно, окно должно быть закрыто и вкладка должна загрузиться. Какой лучший способ реализовать это? Должен ли я сделать собственный контроллер панели вкладок?

РЕДАКТИРОВАТЬ: Я принял подход кофеина. Кажется, это работает для меня:

// App delegate

#pragma mark - UITabBarController delegate

- (BOOL)tabBarController:(UITabBarController *)tabBarController
          shouldSelectViewController:(UIViewController *)viewController {
  if ([[viewController topViewController] loginRequired]) {
    LoginViewController *loginViewController = [[LoginViewController alloc] init];
    UINavigationController *navController = [[UINavigationController alloc]
      initWithRootViewController:loginViewController];
    [tabBarController presentModalViewController:navController animated:YES];
    [loginViewController release];
    [navController release];
    return NO;
  } else {
    return YES;
  }
}

Ответы [ 3 ]

1 голос
/ 25 июля 2011

Вы можете попробовать реализовать tabBarController:shouldSelectViewController из UITabBarControllerDelegate.Представьте модальный контроллер входа изнутри этого метода делегата и, если он успешен, верните YES, иначе NO.

1 голос
/ 25 июля 2011
  1. Сделайте ваш tabBarController вашим rootViewController.

  2. Создайте класс и просмотр для вашего LoginController.

  3. На первой вкладке, которая должна открыться (или на вкладке, для которой требуется модальное представление), перейдите к методу viewDidLoad и ссылке LoginViewController и используйте

     LoginController *lvc = [[LoginController alloc]initWithNibName:@"LoginController" bundle:[NSBundle mainBundle]];
    
         UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:LoginController];
    
    
     [self presentModalViewController:navController animated:NO];
    
      // This gives navigation control to the login controller //
    
  4. Если вход в систему успешен, вы можете просто сделать [self dismissModalViewControllerAnimated:YES];

  5. Если вход не выполнен, вы можете перейти к ForgotLoginController для восстановления пароля или просто popToRootViewController и вернутьсяперейти к предыдущему экрану или перейти к первому представлению в стеке навигации и остаться в параметрах входа.

0 голосов
/ 25 июля 2011

Вы можете просто использовать TabBarController делегировать методы , чтобы обнаружить изменения вкладки, а затем сохранить выбранный индекс для дальнейшего использования.

...