子视图控制器必须有一个公共的父视图控制器

问题描述 投票:0回答:1

当我连续点击按钮时,我的应用程序崩溃了。点击按钮时,我正在制作

transitionFlipFromRight
动画。

这是我在按钮操作上编写的代码片段:

func transitionBetweenViews() {
    let fromViewController = aController
    let toViewController = bController
    let options: UIView.AnimationOptions = self.viewModel.State == .something ? .transitionFlipFromRight : .transitionFlipFromLeft
    if !self.children.contains(toViewController) {
        fromViewController.willMove(toParent: nil)
        self.addChild(toViewController)
    }
    self.containerView.fillWithView(toViewController.view)
    self.transition(from: fromViewController, to: toViewController, duration: 0.5, options: options, animations: {
    }, completion: { _ in
        fromViewController.removeFromParent()
        toViewController.didMove(toParent: self)
    })
}

但我观察到,当我将

duration
从 0.5 更改为 0.1 时,应用程序可以正常工作,但动画看起来不太好。

这是崩溃日志:-

*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“调用 -[UIViewControllertransitionFromViewController:toViewController:duration:options:animations:completion:] 时,子视图控制器必须具有公共父视图控制器”

ios swift animation transition
1个回答
0
投票

当之前的转换仍在进行时,开始转换是不连贯的。因此,只需防止在转换过程中点击按钮即可。只需在按钮操作开始时关闭用户交互,然后在完成处理程序中将其重新打开即可。

© www.soinside.com 2019 - 2024. All rights reserved.