This has been stumping me for a while now. I have a UISplitViewController
inside a UITabBarController
. The master view is a TableView. When I click on a cell, I bring up a very basic view controller with just a UIButton
centered. Here is the code for the view controller:
class TestViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet weak var button: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func buttonPressed(sender: AnyObject) {
let pickerC = UIImagePickerController()
pickerC.delegate = self
pickerC.modalPresentationStyle = .Popover
pickerC.popoverPresentationController?.sourceView = button as UIView
pickerC.popoverPresentationController?.sourceRect = (button as UIView).bounds
pickerC.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.Any
self.presentViewController(pickerC, animated: true, completion: nil)//4
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
self.dismissViewControllerAnimated(true, completion: nil)
}
func imagePickerControllerDidCancel(picker: UIImagePickerController) {
self.dismissViewControllerAnimated(true, completion: nil)
}
}
If I click cancel or select and image, the picker controller dismisses properly. The problem comes when I click on the back button to return to the TableView, I receive:
Unbalanced calls to begin/end appearance transitions for <TestViewController: 0x7fb882a72380>.
The TestViewController
is very basic, so why would this be happening?
This issue occurs if you trying to push new view controller while previous transaction (animation) in progress. So please check your code flow and make the appropriate changes. Check your dismiss and present view animations. You can use property setAnimation to 'YES/NO'resolve this
Set animated:NO, may be solve your problem
To me this weird issue was occurring due to following line after implementation of UISplitViewController
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
.
.
.
// splitViewController.preferredDisplayMode = .PrimaryOverlay
.
.
.
}
By commenting this line in didFinishLaunchingWithOptions issue was resolved.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With