2012-01-02 2 views
2

В настоящее время я вытаскиваю свои волосы, решая эту ошибку:/Я уже пробовал решения из других потоков SO относительно этой темы, но пока не повезло.Неуравновешенные вызовы для перехода на начало и конец

Вот что не так: У меня есть UINavigationController, который толкает View A, из вида A Я могу нажать кнопку, чтобы нажать View 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> 

Это, как я нажимаю View 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: анимированные:', 'viewDidAppear: анимированные:', 'viewWillDisappear: анимированные:' и 'viewDidDisappear: анимированные:' методы. –

+0

Эти методы не реализованы в обоих VC. Должны ли эти методы внедряться во всех контроллерах представлений, которые попадают в стек? –

+0

Вам не нужно их реализовывать. Если вы это сделаете, вам нужно называть 'super'. –

ответ

11

Оказалось, что в моем случае основной причиной этой проблемы было то, что я забыл обновить все shouldAutorotateToInterfaceOrientation: методы в разных контроллерах зрения вернуть YES для всех UIInterfaceOrientations (или, скажем, все они должны вернуть sam). Это разрешило проблему.

+0

У меня была такая странность, и этот ответ спас меня. Верно O! Эта проблема, похоже, происходит только в ландшафте iOS 5. Это приложение работает в iOS 4 в течение нескольких лет. Также кажется, что это происходит только при создании в Xcode 4. До недавнего времени мы строили с использованием Xcode 3, и это никогда не возникало. – btschumy

+0

Genius !!! У меня была та же проблема: в обоих диспетчерах отображения мне нужно было вернуть одно и то же: «вернуть UIInterfaceOrientationIsLandscape (interfaceOrientation)», и он также решил мою проблему. –

+0

Спасибо - помогли больше, чем вы знали. –

Смежные вопросы

 Смежные вопросы