我使用OAuth 2.0實驗。它會打開一個包含UIWebView的窗口作爲認證服務器通過的畫布。現在,它被視爲具有自己的視圖控制器的模態視圖,並且沒有後退按鈕或取消按鈕。所以用戶無法擺脫登錄過程。沒有成功嘗試導航控制器添加到現有的iOS應用
我想有一個導航控制器處理,所以我可以推的WebView視圖控制器的web視圖。
我有這樣的問題。在我看來,我應該能夠僅僅創建根視圖控制器作爲主視圖控制器,這樣
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:self];
但是一個UINavigationController對象,此行崩潰程序,而不在調試器中的錯誤信息。
我以爲我可以放置到行後立即推Web視圖控制器上面,像這樣:
[navController pushViewController:windowController animated:YES];
但是,沒有得到過去的第一線,我不能開始工作了有關使Web視圖顯示並配置後退按鈕的詳細信息。
UPDATE
下面是一些背景。這是在一個單一的視圖應用程序。以下代碼位於主視圖控制器中,該控制器會顯示登錄對話框。我想通過將windowController推到navController棧上來替換最後一行,即調用presentModalViewController的地方。請注意導航控制器初始化所在的最後註釋代碼。
- (IBAction)signInClicked:(id)sender {
if (![self isSignedIn]) {
// Sign in
[self runSigninThenInvokeSelector:@selector(updateUI)];
}
[self updateUI];
}
- (void)runSigninThenInvokeSelector:(SEL)signInDoneSel {
NSString *clientID = mClientId;
NSString *clientSecret = mClientSecret;
// Show the OAuth 2 sign-in controller
NSString *scope = [GDataServiceGoogleBlogger authorizationScope];
GTMOAuth2ViewControllerTouch *windowController;
windowController = [[GTMOAuth2ViewControllerTouch controllerWithScope:(NSString *)scope
clientID:(NSString *)clientID
clientSecret:(NSString *)clientSecret
keychainItemName:(NSString *)kKeychainItemName
delegate:(id)self
finishedSelector:@selector(windowController:finishedWithAuth:error:)] retain];
//UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:self]; // This causes a crash when it is not commented out.
[self presentModalViewController:windowController animated:YES];
}
的應用程序委託didFinishLaunchingWithOptions設置是這樣的:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.viewController = [[[blogSpotViewController alloc] initWithNibName:@"myNibName" bundle:nil] autorelease];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
你能提供身邊,你是把這些代碼行一些背景? –
謝謝。請看看我上面的更新。 – Jim