pushViewController无法在iOS 5上运行以启动GTMOAuth2ViewControllerTouch

时间:2012-06-27 10:01:39

标签: ios5 oauth-2.0 single-sign-on

我正在使用sdk 5和storyboard开发iPad应用程序。我正在关注[OAuth2]教程和示例。1

我已将代码移植到Singleton。每次调用initSesion时创建一个新视图:

    viewController = [[GTMOAuth2ViewControllerTouch alloc] initWithScope:scope
                                                             clientID:kMyClientID
                                                         clientSecret:kMyClientSecret
                                                     keychainItemName:kKeychainItemName
                                                             delegate:self
                                                     finishedSelector:@selector(viewController:finishedWithAuth:error:)];

//viewController.keychainItemAccessibility = kSecAttrAccessibleAlways;

NSDictionary *params = [NSDictionary dictionaryWithObject:@"en"
                                                   forKey:@"hl"];

//viewController.signIn.additionalAuthorizationParameters = params;

NSString *html = @"<html><body bgcolor=silver><div align=center>Loading sign-in page...</div></body></html>";
viewController.initialHTMLString = html;


[[self navigationController] pushViewController:viewController
                                       animated:YES];

但是,当另一个Viewcontroller调用simgleton时,推送的视图不会显示。

Teorically,导航器控制器使用堆栈来显示不同的视图,因此,如果我的方式正确,该函数必须启动GTMOAuth2ViewControllerTouch.view,使用OAuth2登录,即样本中出现的情况。但什么都没发生。

发生了什么事?提前谢谢。

1 个答案:

答案 0 :(得分:3)

检查您是否有导航控制器,它可能是零。使用调试模式或放置NSLog:

 if(![self navigationController]){   NSLog(@"I´m Nil"); } else { ... }

如果您没有创建navigationController,请尝试使用应用程序的单例来获取它,例如:

[[[[[UIApplication sharedApplication] delegate] window] rootViewController] presentModalViewController:viewController animated:YES];