2

這裏是代碼中的相關行: ...的UINavigationController推動UIViewController中並沒有任何反應

 if([top class] == [SitesViewController class]){ 
          BackupsViewController *backup = [[BackupsViewController alloc] initWithStyle:UITableViewStyleGrouped andID:cg_id]; 
          [websites pushViewController:backup animated:NO]; 
          [websites pushViewController:details_controller animated:YES]; 

網站是一個導航控制器,它不是零。

現在我第一次運行它,它工作正常。但是,如果我退出並重新登錄,則不起作用。事實上,沒有任何反應。它保持在同一頁面上。我已經檢查過,以確保沒有零。我也知道,如果我沒有其他聲明,我正在進入這個聲明。

這裏是註銷功能:

AppDelegate * appDelegate = (GCAppDelegate*)[[UIApplication sharedApplication] delegate]; 
[appDelegate.tabBarController setSelectedIndex:0] 
UINavigationController * topViewController = appDelegate.tabBarController.viewControllers[0]; 
[topViewController presentViewController:loginScreen animated:YES completion:nil]; 
[topViewController popToRootViewControllerAnimated:TRUE]; 
[self deteleKeysAndTokens: (NSString*)k_apiSecret withAccessToken: (NSString*)k_accessToken withAccessSecret:(NSString*) k_accessSecret withkAPIKey: (NSString*)k_apiKey]; 

在情況下,它可能會幫助時,backupViewController是下載的網站列表,並detailsViewcontroller越來越關於網站的信息。事實上,進行調用後:

[websites pushViewController:backup animated:NO]; 
[websites pushViewController:details_controller  
    animated:YES]; 

(這是我貼的代碼中的第一位。) 我檢查,看看有什麼topViewController是:

 UIViewController * topView = websites.topViewController; 

的topViewController是details_controller 。所以我知道它被推入堆棧。但是,什麼都沒有發生。我的觀點與我的觀點一致。我在想,也許是因爲我沒有得到所有的數據。但是這並不能解釋(a)爲什麼它第一次通過和(b)它爲什麼不顯示空白頁。

回答

0

從代碼中很難說出什麼問題,不清楚什麼是視圖的層次結構。

首先確保您使用的是正確的導航控制器:

UINavigationController * websites = viewController.navigationController; 
[websites pushViewController:anotherViewController animated:NO]; 

而且我不知道爲什麼你的註銷功能是如此複雜。你在哪裏執行它? 無論如何,它不適合在導航控制器上呈現視圖控制器,然後將其彈出到根目錄。而且它們都是動畫...

請提供更多代碼。

+0

問題是tabbar控制器在我的nosie下面改變;因此沒有發生。但是爲什麼呈現視圖控制器然後彈出到根目錄不好呢? – user678392

+0

它什麼都不做。你提供了新的控制器來堆棧,然後你做的下一件事就是把所有東西都扔出堆棧。首先放在根上。無論如何,如果你想動畫他們兩人至少執行完整塊的第二個動作。 – tadasz

相關問題