我正在使用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登录,即样本中出现的情况。但什么都没发生。
发生了什么事?提前谢谢。
答案 0 :(得分:3)
检查您是否有导航控制器,它可能是零。使用调试模式或放置NSLog:
if(![self navigationController]){ NSLog(@"I´m Nil"); } else { ... }
如果您没有创建navigationController,请尝试使用应用程序的单例来获取它,例如:
[[[[[UIApplication sharedApplication] delegate] window] rootViewController] presentModalViewController:viewController animated:YES];