2012-01-02 78 views
2

我目前正在拉我的頭髮解決這個錯誤:/我已經嘗試了其他SO線程關於此主題的解決方案,但迄今沒有運氣。不平衡的呼叫開始/結束外觀轉換

這是什麼錯誤: 我有一個UINavigationController,推視圖A,從視圖A我可以按下按鈕推視圖B - 工作正常。但是,當我按下View B,然後將屏幕旋轉到橫向模式,然後單擊後退按鈕,在控制檯中得到以下輸出,並且視圖切換不是動畫,只是從B切換回A:

2012-01-02 20:50:42.866 [13345:f803] Unbalanced calls to begin/end appearance transitions for <DimensionConversionViewController: 0x68831f0>. 
2012-01-02 20:50:42.868 [13345:f803] attempt to dismiss modal view controller whose view does not currently appear. self = <UINavigationController: 0x6b541a0> modalViewController = <UISnapshotModalViewController: 0x6da5190> 

這是我推視圖B進棧:

- (void) showConverter:(id)sender { 
    [self.navigationController pushViewController:converter animated:YES]; 
} 

查看-viewDidLoad的B:

- (void) viewDidLoad { 
     [super viewDidLoad]; 
     // Do any additional setup after loading the view from its nib. 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateInterface) name:@"UIDeviceOrientationDidChangeNotification" object:nil]; 
     // ... Update text fields ... 
     [self updateInterface]; 
} 

-viewDidUnload查看B的:

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"UIDeviceOrientationDidChangeNotification" object:nil]; 
} 

如果您有疑問或需要更多的代碼示例,請讓我知道。

預先感謝:-)

+1

檢查你的'viewWillAppear:animated:','viewDidAppear:animated:','viewWillDisappear:animated:',和'viewDidDisappear:animated:'方法。 – 2012-01-02 20:19:30

+0

這兩種方法在VC中都沒有實現。這些方法是否應該在所有推入堆棧的視圖控制器中實現? – 2012-01-02 20:25:37

+0

您不必執行它們。如果你這樣做,你必須在其中調用'super'。 – 2012-01-02 20:50:57

回答

11

任何幫助,原來,在我的情況下,問題的根源是,我忘了更新都在不同的視圖控制器的shouldAutorotateToInterfaceOrientation:方法返回YES所有UIInterfaceOrientations(或者讓他們說他們都應該返回薩姆)。這樣做解決了這個問題。

+0

我有類似的古怪,這個答案救了我。對啊!這個問題似乎只發生在iOS 5的風景中。這個應用在iOS 4中運行得很好幾年了。它似乎也只是在Xcode 4中編譯時纔會發生。直到最近我們使用Xcode 3構建,這種情況從未出現過。 – btschumy 2012-01-16 21:21:32

+0

天才!我有同樣的問題:在這兩個視圖控制器我需要返回相同的東西:'返回UIInterfaceOrientationIsLandscape(interfaceOrientation);'它也解決了我的問題。 – 2012-09-02 08:03:33

+0

感謝 - 幫助超過你知道的。 – 2012-11-29 15:21:48

相關問題