我正在尝试遵循一个简单的教程,以实现从一个viewController到secondViewController的循环过渡。

但是,Xcode给了我一个教程中没有遇到的错误,并且不确定如何处理。

Variable binding in a condition requires an initializer error

import UIKit

class CircularTransition: NSObject {

    var circle = UIView()

    var startingPoint = CGPoint.zero {
        didSet {
            circle.center = startingPoint
        }
    }

    var circleColor = UIColor.white

    var duration = 0.3

    enum CircularTransitionMode: Int {
        case present, dismiss, pop
    }

    var transition:CircularTransitionMode = .present
}

extension CircularTransition:UIViewControllerAnimatedTransitioning {
    func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
        return duration
    }

    func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
        let containerView = transitionContext.containerView

        var CircularTransitionMode: CircularTransitionMode
        if CircularTransitionMode == .present {
            if case let presentedView == transitionContext.view(forKey: UITransitionContextViewKey.to) {

                let viewCenter = presentedView.center
                let viewSize = presentedView.frame.size

                circle = UIView()

            }
        }
        else{

        }

    }

}

最佳答案

animateTransition函数存在一些问题。

首先,出现错误的行应为:

if let presentedView = transitionContext.view(forKey: UITransitionContextViewKey.to) {


因为您不需要大小写检查,并且尝试分配不比较,所以它是= not ==。

其次,您创建一个类型为CircularTansitionMode的变量,但在此行中不为其分配任何内容:

var CircularTransitionMode: CircularTransitionMode


然后立即尝试使用它。

解决原始错误后,将在下一行标记第二个错误,表明该错误未初始化就被使用。

您也有很多未使用的变量,但是也许您还没有提出完整的代码。

10-08 05:55