2015-02-25 3 views
3

Реализация этой части должна быть довольно простой (но это не так)Как открыть OAuth всплывающее окно (окно иерархии)

Я реализовал OAuthIODelegate в LoginViewController, но проблема в том, когда я запускаю этот код:

OAuthIOModal *oauthioModal = [[OAuthIOModal alloc] initWithKey:@"the_key" delegate:self]; 
[oauthioModal showWithProvider:@"facebook"]; 

Тогда я получаю это:

Предупреждение: Попытка представить OAuthIOModal: 0x14ecc8e0 на MenuViewController: 0x14eb8d80 которого вид не в окне иерархия!

Проблема в том, что я даже не звоню на это в MenuViewController.

В целях тестирования я вызываю LoginViewController из MenuViewController, а затем из контроллера входа в систему, когда я нажимаю кнопку. Я запускаю приведенный выше код.

Я попытался найти решение, но ничего такого конкретного не выскочил.

Справка будет принята с благодарностью.

Того

+1

Вы когда-нибудь выясняли это? У меня такая же проблема. – freedrull

+0

Да, да. Это оказалось именно то, что он сказал :) в основном вам нужно вызвать LoginViewController с помощью navigationController => [self.navigationController pushViewController: _loginScreen animated: YES]; Тогда это будет в иерархии окон. То же самое относится к контроллеру, с которого вы вызываете контроллер входа (если он есть) и так далее, вплоть до контроллера корневого представления (первый, который представлен при запуске приложения). Надеюсь, это поможет. Cheers :) – veich

ответ

0

MenuViewController устанавливается в качестве контроллера зрения корня, но он не загружен (пока). Я предполагаю, что вы переходите между видами в этот момент.

Попробуйте поместить свой код в MenuViewController.m: viewDidLoad. Возможно, вам понадобится что-то, чтобы сменить другую бизнес-логику вокруг этого, но по существу вы не можете показывать всплывающее окно до загрузки представления.

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    OAuthIOModal *oauthioModal = [[OAuthIOModal alloc] initWithKey:@"the_key" delegate:self]; 
    [oauthioModal showWithProvider:@"facebook"]; 
} 
+0

Спасибо @button за ваш ответ, однако я мог бы не быть достаточно ясным при описании ситуации. Контроллер меню был загружен, когда я загрузил контроллер входа в систему, и я вызываю эти методы из контроллера входа. Что я здесь не понимаю, почему я получаю предупреждение относительно экрана, который вообще не связан с этим (а именно, с контроллером меню)? – veich

Смежные вопросы