(окончательное решение внизу)
Я пытаюсь настроить приложение для iPad, которое будет иметь начальный вид входа в систему.Когда пользователь щелкает действие, оно должно перенаправляться на домашний вид.Первоначально я настраивал UIViewController для обработки представления входа в систему.Оттуда я хотел отобразить следующую группу представлений, используя пользовательский контроллер представления.
Я создаю LoginViewController, который обрабатывает loginView, добавляя этот вид в окно из AppDelegate:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
loginViewController = [[LoginViewController alloc] init];
[self.window addSubview:loginViewController.loginView];
[self.window makeKeyAndVisible];
return YES;
}
И интерфейс для моего LoginViewController выглядит следующим образом:
@interface LoginViewController : UIViewController {
UIView *loginView;
UITextField *usernameTextField;
UITextField *passwordTextField;
UIButton *submitButton;
}
@property (nonatomic, retain) IBOutlet UIView *loginView;
@property (nonatomic, retain) IBOutlet UITextField *usernameTextField;
@property (nonatomic, retain) IBOutlet UITextField *passwordTextField;
-(IBAction)submit;
-(void)setupTextFields;
@end
То, что я пытался сделать, это добавить HomeViewController, который расширил бы класс UIViewController, внутри моего LoginViewController, чтобы при нажатии кнопки действия внутри моего loginView он загружал новый пользовательский контроллер представления.
Нокогда я делаю это таким образом, начальное отображаемое изображение, обработанное HomeViewController, отображается неправильно.Похоже, он отображает альбомную ориентацию, когда он должен быть портретным и наоборот.
Я хочу, чтобы представление входа в систему отображалось внизу в стеке представлений, чтобы иметь возможность вернуться к этому представлению входа в систему при выходе из системы.действие нажимается.
Я думаю, что мой подход к этой проблеме неправильный.Кто-нибудь может сориентировать меня в лучшем из возможных решений?Как мне это сделать?
Следуя решению, предложенному @Jonah, я переключил homeViewController на тот, который создан в AppDelegate, и назвал displayLoginModalViewController
следующим образом:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
homeViewController = [[HomeViewController alloc] init];
[homeViewController displayLoginModalViewController];
[self.window addSubview:homeViewController.homeView];
[self.window makeKeyAndVisible];
return YES;
}
Реализация моего displayLoginModalViewController
выглядит следующим образом:
-(void)displayLoginModalViewController{
LoginViewController *loginViewController = [[LoginViewController alloc] init];
loginViewController.modalPresentationStyle = UIModalPresentationFullScreen;
loginViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:loginViewController animated:YES];
}
Я пытался вызвать метод displayLoginModalViewController
до и после добавления homeView
в окно, и оно не рендеритсямодальный вид.Я чувствую, что здесь чего-то не хватает.Метод отображает модальное представление, когда действие выхода из системы нажимается из homeView, но не при запуске приложения.
Я также поместил NSLog
s после добавления подпредставления в didFinishLaunchingWithOptions:
и послеpresentModalViewController
: в методе displayLoginModalViewController
.Обе NSLog
отображаются в моей консоли, я просто не знаю, почему она не отображает модальное представление.
============================================================================================
Спасибо за предоставленные варианты.Я решил пойти по модальному маршруту.К сожалению, когда я первоначально настраивал это, я подходил к проблеме неправильно.
Когда дело доходит до модальных представлений, очевидно, они требуют взаимодействия с пользователем.Это означает, что они могут быть представлены только после действий, выполненных пользователем.Когда я впервые захотел настроить вход в систему в качестве модального вида и сохранить мой домашний вид в качестве основного, просто не было возможности отображать модальный вид при запуске.Это потребовало действия.
После нескольких часов просмотра экрана я решил перестать быть упрямым, использовать логин в качестве основного экрана и отобразить домашний вид в качестве модального.Это не только решает проблему отображения входа в систему при запуске, но также помогает с настройкой, которую я хотел, чтобы пользователь мог выйти из приложения, не выходя из приложения и просто освободив все использование памяти с этого момента.