2012-10-24 44 views
2

我有一個應用程序,其中第一個視圖是登錄屏幕,並且用戶名和密碼用於在應用程序周圍進行身份驗證。如果身份驗證過程中出現問題,用戶將被退回到登錄屏幕,但如果用戶在導航欄中按下後退按鈕時出現問題,應用程序會顯示正確的登錄屏幕,但導航欄將顯示它應該顯示的視圖中的按鈕。PopToViewController顯示正確的ViewController,但錯誤的導航欄

示例:如果用戶按下視圖B上的後退按鈕,並且應用程序應顯示視圖A,但出現問題,應用程序將顯示登錄屏幕,但導航欄是視圖A中的一個。

我已經嘗試了幾件事情,但是是最接近的事情是: 在ViewWillDisappear爲View B:

 NSArray * nc = [self.navigationController viewControllers]; 
    [self.navigationController popToViewController:[nc objectAtIndex:0] animated:YES]; 

它給上述結果discribed。

+0

完全同樣的問題。最後用錯誤的導航欄可能會有非常奇怪的結果。你有什麼可能分享什麼使這項工作適合你?謝謝。 – bplattenburg

回答

2

在你的LoginController重寫viewWillAppear中:方法和設置導航欄按鈕,只要你想:

-(void) viewWillAppear:(BOOL) animated 
{ 
    [super viewWillAppear:animated]; 

    //Example : 
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"AText" style:UIBarButtonItemStyleBordered target:self action:@selector(anAction)]; 
} 

如果你不使用ARC記得自動釋放添加到leftBarButton項目:

self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"AText" style:UIBarButtonItemStyleBordered target:self action:@selector(anAction)] autorelease]; 
+0

非常感謝您的回答。只有這個小問題,「自我」沒有它的「navigationItem屬性」。我會玩它,但我想,當我找到它時,我可以說:「self.navigationItem.leftBarButtonItem = nil」如果我想讓按鈕消失? – Morten

+0

是的,你可以,這個按鈕不會出現在這種情況下。 – Ashbay

-1

成功登錄後刪除登錄屏幕 [self.window removeFromsuperview] 然後它將從naviagation中刪除登錄屏幕。 接受我的答覆,如果它發生謝謝你