Скрытие основного вида в контроллере разделенного вида
Я новичок в разработке для 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, например, объект модели для вашей организации учетных данных.