3

我正在使用 sdk 5 和情节提要开发一个 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 时,推送的视图不会显示。

理论上,导航控制器使用堆栈来显示不同的视图,因此,如果我以正确的方式,该函数必须启动 GTMOAuth2ViewControllerTouch.view,以使用 OAuth2 登录,这在示例中发生。但什么也没有发生。

这是怎么回事?提前致谢。

4

1 回答 1

3

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

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

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

[[[[[UIApplication sharedApplication] delegate] window] rootViewController] presentModalViewController:viewController animated:YES];
于 2012-06-27T10:50:46.827 回答