2013-10-14 53 views
1

我有這行代碼點擊頂欄上的「返回」按鈕時,彈出回到根菜單:self.navigationController popToRootViewControllerAnimated:是不彈出,回到根

- (void)viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 
    [self.navigationController popToRootViewControllerAnimated:YES]; 
} 

我有直到現在,這個沒有問題,我仍然使用IOS 5.1作爲目標。

像我現在運行這段代碼(XCODE 5)我得到以下信息:

Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted. 

...它似乎只在頂欄文本彈出回到根(菜單),而顯示器只能彈回一級。由於這一直工作,我有點困惑,並希望一些建議如何解決這個問題。視圖控制器是我執行此代碼是一個正常的ViewController。我使用[self performSegueWithIdentifier:@"xxxxx" sender:self];推動ViewControllers。

只是爲了測試我用這個代碼:

-(void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    [self.navigationController popToRootViewControllerAnimated:YES]; 
} 

...它沒有彈出VC,然後直接pop'ed回rootVC沒有消息???

這裏是結構,它是從綠色的VC我有問題回到第一個VC。此外,我還沒有之前這個問題xcode5:

enter image description here

+0

它*威力*工作。 –

+0

嘗試調用'[super viewWillDisappear:animated];'在彈出到根視圖控制器或者根本不調用它,就好像一個過渡正在進行中,另一個可能不會踢入。 –

+0

我已經嘗試了兩個答案,「 viewDidDisappear「將在當時彈回一級,而不是直接返回到根。 @Yas Kuraishi不叫超級,或者之後做,沒有區別。奇怪的是,它在Xcode 5之前確實工作了:-( – PeterK

回答

3

好,我剛纔注意到你正在嘗試流行到根,當用戶推回,但這裏是發生了什麼:

操作系統試圖用動畫推送到前一個viewController,並且在同一時刻,您正在啓動第二個轉換並要求它彈出到根視圖控制器。

最簡單的方法將使用將使用自己的IBAction爲你這時會彈出到RootViewController的自定義按鈕更換系統的後退按鈕:

首先隱藏後退按鈕:

self.navigationItem.hidesBackButton = YES; 

然後創建自己的自定義後退按鈕:

UIBarButtonItem *backBtn =[[UIBarButtonItem alloc]initWithTitle:@"back" style:UIBarButtonItemStyleDone target:self action:@selector(popToRoot:)]; 
self.navigationItem.leftBarButtonItem=backBtn; 

最後你彈出到RootViewController的:

- (IBAction)popToRoot:(UIBarButtonItem*)sender { 
    [self.navigationController popToRootViewControllerAnimated:YES]; 
} 

請記得從ViewWillDisappear代表中刪除[self.navigationController popToRootViewControllerAnimated:YES];

+0

感謝您的回答,但它仍然不起作用。代理 – PeterK

+0

......但奇怪的是,這已經工作了兩年 – PeterK

+0

好的,請看看新的方法,這應該更容易使用,前一個將需要繼承UINavigationController,並且會更多複雜。 – Lefteris

0

試試這個代碼,它會幫助你..在`viewDidDisappear`

[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES]; 
+0

我做了測試,並把它放在「viewWillDisappear」中,它不起作用,和以前的結果一樣。 – PeterK

+0

objectAtIndex:0它導航索引0視圖控制器 – Muralikrishna

相關問題