【发布时间】:2014-06-21 16:16:57
【问题描述】:
在我的应用中发生解雇时,我收到 2 个错误。 Warning: Attempt to dismiss from view controller <MyNavigationController> while a presentation or dismiss is in progress!
& Unbalanced calls to begin/end appearance transitions for <MainViewController>.
我四处搜索,到处都说通常会发生冲突的解除,即按钮以编程方式和通过情节提要调用转换。但是,我在使用导航控制器附带的正常后退按钮时收到这些错误。我根本不会对按钮做任何事情。
我唯一可以链接到错误的是我的导航控制器在尝试关闭视图控制器时自动旋转。如果我删除自动旋转或将两个视图控制器的方向设置为相同,那么我不会收到错误消息。问题是,我需要一个视图控制器是纵向的,另一个是横向的......
这就是我设置方向的方式
NavController.m:
- (NSUInteger)supportedInterfaceOrientations {
return self.topViewController.supportedInterfaceOrientations;
}
- (BOOL)shouldAutorotate {
return YES;
}
MainViewController.m:
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
OtherViewController.m:
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscapeRight;
}
我注意到由于某种原因它在转到我的“OtherViewController”时没有自动旋转,但它显然在返回“MainViewController”时尝试自动旋转,从而导致崩溃。
因为它可能是相关的,这就是我加载我的 OtherViewController 的方式:
[self performSegueWithIdentifier:titles[indexPath.row] sender:nil];
我有一个 CollectionViewController 调用我在情节提要中设置的推送序列。 Titles 是连接到 MainViewController 的不同 segue 标题的 NSArray。
这是我的应用程序中发生的事情的流程:
MainViewController : LoadView
MainViewController : ViewWillAppear
MainViewController : ViewDidAppear
//This is where I choose to load the OtherViewController
OtherViewController : LoadView
MainViewController : ViewWillDisappear
OtherViewController : ViewWillAppear
MainViewController : ViewDidDisappear
OtherViewController : ViewDidAppear
//This is where I select the "Back" button
Warning: Attempt to dismiss from view controller NavController while a presentation or dismiss is in progress!
Unbalanced calls to begin/end appearance transitions for MainViewController.
MainViewController : ViewWillDisappear
MainViewController : ViewDidDisappear
【问题讨论】:
-
将此添加到您的代码中: NSLog(@"%@",[self.navigationController viewControllers]);并告诉我它打印出来的内容。
-
(MyMainViewController, OtherViewController)应该有的两个视图控制器都在那里
标签: ios objective-c xcode uinavigationcontroller autorotate