开始/结束外观转换的不平衡调用
Posted
技术标签:
【中文标题】开始/结束外观转换的不平衡调用【英文标题】:Unbalanced calls to begin/end appearance transitions 【发布时间】:2012-01-02 20:05:16 【问题描述】:我目前正在努力解决这个错误:/我已经尝试过其他 SO 线程关于这个主题的解决方案,但到目前为止还没有运气。
这是错误的: 我有一个 UINavigationController 推送视图 A,从视图 A 我可以按下按钮来推送视图 B - 工作正常。但是当我按下视图 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];
-viewB 的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];
-viewB 的viewDidUnload:
- (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];
如果您有任何问题或需要更多代码示例,请告诉我。
在此先感谢您的帮助 :-)
【问题讨论】:
检查您的viewWillAppear:animated:
、viewDidAppear:animated:
、viewWillDisappear:animated:
和 viewDidDisappear:animated:
方法。
这两个VC都没有实现这些方法。这些方法是否应该在所有被推入堆栈的视图控制器中实现?
您不必实现它们。如果这样做,则必须在其中致电super
。
终于解决了这个问题,看来这个问题可能有很多不同的原因,但感谢您的帮助!
【参考方案1】:
事实证明,就我而言,问题的根本原因是,我忘记更新不同视图控制器中的所有 shouldAutorotateToInterfaceOrientation:
方法以对所有 UIInterfaceOrientations
返回 YES(或者假设它们都应该返回山姆)。这样做解决了这个问题。
【讨论】:
我也有类似的怪癖,这个答案救了我。对哦!这个问题似乎只发生在 ios 5 的横向环境中。这个应用程序在 iOS 4 中已经运行了好几年了。它似乎也只在 Xcode 4 中构建时发生。直到最近我们使用 Xcode 3 构建,但从未出现过。 天才!!!我遇到了同样的问题:在两个视图控制器中,我需要返回相同的内容:return UIInterfaceOrientationIsLandscape(interfaceOrientation);
,它也解决了我的问题。
谢谢 - 帮助比你知道的更多。
天哪!很难弄清楚这一点!这也帮助我解决了我的问题! iOS6 和 XCode 4.6。以上是关于开始/结束外观转换的不平衡调用的主要内容,如果未能解决你的问题,请参考以下文章
开始/结束外观转换的不平衡调用...- UIViewController 包含
UISplitViewController 中对开始/结束外观转换的不平衡调用
<UINavigationController: *****> 开始/结束外观转换的不平衡调用