Использование presentModalViewController с раскадровками - PullRequest
8 голосов
/ 25 января 2012

Я довольно новичок в программировании для iOS, и я работаю над приложением для iPad, к которому подключен контроллер панели вкладок с 4 контроллерами представления (с именем FirstViewController, SecondViewController и т. Д.)В настоящее время контроллер панели вкладок установлен в качестве начальной точки приложения по умолчанию.Я хочу иметь возможность аутентифицировать пользователя до того, как он достигнет этой точки, поэтому я добавил еще один View Controller, называемый LoginViewController, который сам по себе перемещается в раскадровке.

Я хочу разрешить загрузку приложения и в didFinishLaunching отображать страницу входа до завершения аутентификации, а затем отклонять ее.Я искал последние пару дней, но все, что я пробовал, провалилось.

Моя самая последняя попытка была

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];

UINavigationController *loginVC = [storyboard instantiateViewControllerWithIdentifier:@"loginVC"];

loginVC.modalPresentationStyle = UIModalPresentationFullScreen;

[self.window.rootViewController presentModalViewController:loginVC animated:YES];

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

Ответы [ 3 ]

12 голосов
/ 06 сентября 2012

Проблема заключалась в том, что я пытался создать его как UINavigationController, хотя на самом деле это был просто UIViewController.Вызов этого в applicationDidBecomeActive в appDelegate.m сделал свое дело.

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *loginVC = [storyboard instantiateViewControllerWithIdentifier:@"loginVC"];
loginVC.modalPresentationStyle = UIModalPresentationFullScreen;    
[self.window.rootViewController presentModalViewController:loginVC animated:YES];
2 голосов
/ 30 января 2016

В Swift 2 это теперь:

if let loginController: LoginViewController = mainStoryboard.instantiateViewControllerWithIdentifier("StoryboardControllerID")  as? LoginViewController {
    loginController.modalPresentationStyle = .FullScreen
    self.window?.rootViewController?.presentViewController(loginController, animated: true, completion: { () -> Void in
        // do stuff!
    })
}
2 голосов
/ 25 января 2012

Вам необходимо вызвать «presentModalViewController» из текущего отображаемого viewController, а не из представления, которое должно отображаться. Скорее всего, как-то так:

[self.window.rootViewController presentModalViewController:loginVC animated:YES];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...