Скрытие основного вида в контроллере разделенного вида

Я новичок в разработке для iPad (или iPhone в этом отношении:)), и я создаю приложение с Split View Controller.

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

Я знаю, что могу вернуть YES в splitViewController:shouldHideViewController:inOrientation:, и это прекрасно работает для первого экрана, но я хотел бы получить два представления, когда пользователь нажимает кнопку входа в систему и проверяются учетные данные.

Я могу поставить некоторое условие в shouldHideViewController, и это показывает два вида на втором экране и только детали на первом, но shouldHideViewController вызывается, только если я поворачиваю свой iPad, а не при выполнении перехода.

Есть ли у вас какие-либо советы, чтобы сделать это? Должен ли я изменить свой подход к пользовательскому интерфейсу на что-то другое? Любые предложения приветствуются.

1 ответ

Решение

Начинать с нуля это хорошая идея. Вы имеете больше контроля над тем, что происходит в IMO. На начальном этапе вы хотите добавить свой LoginViewController.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.loginController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}

Позже, когда процесс аутентификации закончится, вы захотите продолжить работу с SplitView, верно?

- (void)continueWithSplitView {

    UINavigationController *leftNav = [[UINavigationController alloc] initWithRootViewController:self.masterViewController];
    UINavigationController *rightNav = [[UINavigationController alloc] initWithRootViewController:self.detailViewController];

    self.splitViewController.viewControllers = [NSArray arrayWithObjects:leftNav, rightNav, nil];
    self.view.window.rootViewController = self.splitViewController;
}

Обратите внимание, что в обоих методах желаемый viewController установлен как свойство rootViewController в UIWindow. Это автоматически добавит представление вашего контроллера как представление верхнего уровня в UIWindow.

Кроме того, убедитесь, что вы следуете шаблону MVC, например, объект модели для вашей организации учетных данных.

Другие вопросы по тегам