我目前正在努力解决此错误://我已经尝试过其他SO线程中有关此主题的解决方案,但到目前为止还算不上成功。
这是怎么回事:
我有一个UINavigationController可以从View A推送View 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>
这就是我将视图B推入堆栈的方式:
- (void) showConverter:(id)sender {
[self.navigationController pushViewController:converter animated:YES];
}
视图B的-viewDidLoad:
- (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];
}
-viewDidView 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];
}
如果您有疑问或需要更多代码示例,请告诉我。
在此先感谢您的帮助:-)
最佳答案
事实证明,就我而言,问题的根本原因是,我忘记更新不同视图控制器中的所有shouldAutorotateToInterfaceOrientation:
方法,以对所有UIInterfaceOrientations
返回YES(或者说它们都应返回sam)。这样做解决了这个问题。
关于objective-c - 开始/结束外观转换的调用不平衡,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8704852/