Запуск представления входа в систему до отображения контроллера панели вкладок - PullRequest
7 голосов
/ 27 января 2012

У меня есть приложение ios5, разработанное с использованием раскадровок, которое в настоящее время отображает представление контроллера панели вкладок при первом запуске.Я хотел бы отобразить экран входа в систему до отображения контроллера панели вкладок.Пользователь вводит свое имя пользователя и пароль, затем система аутентифицирует пользователя, а затем, в случае успеха, отображает контроллер панели вкладок.

Я попробовал следующие 3 варианта, но безуспешно ... есть идеи?

(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    // Option 1
    UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
    PointsViewController *firstVC = [[tabBarController viewControllers] objectAtIndex:0];
    UIViewController *loginViewController = [[LoginViewController alloc] init];
    [firstVC.navigationController pushViewController:loginViewController animated:YES];

    // Option 2
    UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
    UIViewController *loginViewController = [[LoginViewController alloc] init];
    [tabBarController presentViewController:loginViewController animated:NO completion:nil];  

    // Option 3
    UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
    UIViewController *loginViewController = [[LoginViewController alloc] init];
    [tabBarController presentModalViewController:loginViewController animated:NO];

    return YES;
}

Ответы [ 4 ]

18 голосов
/ 11 февраля 2012

Наконец-то понял это ... вот что вам нужно сделать:

  1. Добавить автономный вид входа в систему для раскадровки.

  2. Выберите представление входа в систему и в инспекторе атрибутов установите флажок «Первоначальный контроллер представления».Это переключит исходный вид, запускаемый из контроллера вкладок, в вид входа в систему, решая тем самым всю проблему отображения экрана входа в систему вначале.

  3. Добавьте кнопку в представление входа в систему и создайтеПоследовательность загрузки контроллера вкладок по нажатию кнопки.(Или вы можете создать переход от представления входа в систему к представлению контроллера вкладок и программным образом вызывать переход по мере необходимости).

  4. Выберите представление входа в систему и выберите «Редактор»> «Встроить»> «Навигация».Контроллер

  5. В инспекторе атрибутов для контроллера навигации снимите флажок «Показывать панель навигации» (это косметическое изменение; я предполагаю, что панель навигации, отображаемая наэкран входа в систему !!)

Вот и все:)

2 голосов
/ 13 января 2014

Взгляните на следующие ссылки

stackoverflow.com / Вопросы / 16351348 /…

link2

ссылка 3

0 голосов
/ 04 марта 2016

Я столкнулся с этой проблемой только сейчас, и я прекрасно решил эту проблему, добавив следующий код, который вы также не использовали.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    ...
    [self.window makeKeyAndVisible];
}
0 голосов
/ 27 января 2012

Вы можете использовать модальное представление.Вы можете проверить, вошел ли пользователь в систему. Если нет, то вы можете использовать модальное представление для получения информации для входа.Вы можете создать UIViewController в раскадровке, а затем использовать instantiateViewControllerWithIdentifier: метод для создания экрана входа в систему из раскадровки.Затем просто покажите это модально.

...