【问题标题】:Swift Unbalanced calls to begin/end appearance transitions forSwift Unbalanced 调用开始/结束外观转换
【发布时间】:2015-05-05 19:02:26
【问题描述】:

这已经困扰了我一段时间了。我在UITabBarController 中有一个UISplitViewController。主视图是一个 TableView。当我单击一个单元格时,我会调出一个非常基本的视图控制器,其中只有一个 UIButton 居中。这是视图控制器的代码:

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)
    }
}

如果我单击取消或选择和图像,选择器控制器会正确关闭。当我单击返回按钮返回 TableView 时,问题来了,我收到:

Unbalanced calls to begin/end appearance transitions for <TestViewController: 0x7fb882a72380>.

TestViewController 非常基础,为什么会这样呢?

【问题讨论】:

  • 当你回到tableView时,也许tableView又试图展示这个vc了?

标签: ios swift uiviewcontroller uiimagepickercontroller


【解决方案1】:

如果您在上一个事务(动画)正在进行时尝试推送新的视图控制器,则会出现此问题。因此,请检查您的代码流并进行适当的更改。检查您的关闭和呈现视图动画。您可以使用属性 setAnimation 来“是/否”解决这个问题

设置动画:否,可能会解决您的问题

【讨论】:

  • 感谢您的帮助。奇怪的是,它帮助我找到了问题,这是在 UITabBarController 的 viewDidAppear 方法中,我错过了这一行:super.viewDidAppear(animated)。
  • @MikeWalker 只需调用 super.viewDidAppear 保存我的 daaaayyyyyy。
  • @MikeWalker 你拯救了我的一天,我也错过了超级,谢谢
【解决方案2】:

对我来说,这个奇怪的问题是由于 UISplitViewController 实现后出现的以下行

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
.
.
.
    // splitViewController.preferredDisplayMode = .PrimaryOverlay
.
.
.
    }

通过在 didFinishLaunchingWithOptions 中评论这一行,问题得到解决。

【讨论】:

    【解决方案3】:

    就我而言,我忘记删除情节提要文件。在我删除它之后,这个警告就消失了。

    【讨论】:

      猜你喜欢
      • 2016-01-30
      • 1970-01-01
      • 2021-04-12
      • 2012-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多