3

SDK5とストーリーボードを使用してiPadアプリケーションを開発しています。[OAuth2]チュートリアルとサンプルに従っています。1

コードをシングルトンに移植しました。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

ナビゲーションコントローラーがあるかどうかを確認してください。nilの可能性があります。デバッグモードを使用するか、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 に答える