UIImagePickerController阻塞Segue

时间:2014-04-30 14:51:17

标签: ios objective-c uiviewcontroller uiimagepickercontroller segue

我有UITabBarController “5个标签”。中间标签是UIViewController(嵌入在NavigationController中),其中包含MapView,其中包含一个UITextView和两个UIButtons的其他几个视图。 }。其中一个按钮打开UIImagePickerController,另一个按钮使用“AFHTTPRequestOperationManager”触发 API 调用,然后从手动触发[self performSegueWithIdentifier: @"SomeDetailView" sender: (id)self];视图控制器(它是一个渲染细节视图的推送segue)。

我遇到的问题是,如果点击了相机按钮,并且UIImagePickerController被实例化,它最终会阻止segue过渡。如果我从画廊中选择一张照片,拍摄一张新照片,或者根本不拍照并取消选择器,这无所谓。任何这些场景都会阻止segue过渡。

仍会触发实际的segue事件,并且仍然会执行prepareForSegue方法,但实际转换不会发生。但是,如果我点击UITabBarController上的另一个标签,然后点击返回中心标签,则会发生segue转换,我会收到“不平衡调用开始/结束外观转换”警告。

我排除的事情:

  • 我正在使用SVProgressHUD来显示API调用时的状态。我删除了它;没有帮助。
  • 与AFNetworking相关的所有内容均已删除。在显示选择器之后,只需点击按钮即可在没有API调用的情况下触发[self performSegueWithIdentifier: @"SomeDetailView" sender: (id)self];,会导致同样的问题。
  • 使用块或GCD尝试延迟segue过渡没有帮助
  • 在呈现或取消图像选择器时关闭动画无效

其他信息:

  • View controller-based status bar appearance设为NO
  • 中心UIViewController隐藏了NavigationBar。它的细节视图显示了NavigationBar。如果用户取消详细视图控制器,则再次隐藏NavigationBar
  • 调用[[self navigationController] setNavigationBarHidden:YES animated:NO]或不同意。
  • 以下是中心视图控制器实现的委托方法:MKMapViewDelegate, UIImagePickerControllerDelegate, UIActionSheetDelegate, UITextViewDelegate
  • 这种奇怪的行为似乎刚刚从iOS 7.1开始 - 这个版本的应用程序已经投入生产并且运行良好约6个月。

任何可能导致图像选择器阻止后续segue 的想法?

1 个答案:

答案 0 :(得分:0)

一行代码......着名的最后一句话。

问题在于我将UITabBarController子类化并实现了viewWillAppear方法,但没有调用[super viewWillAppear:animated]; - 一旦我添加了所有内容再次起作用。