转换控制器动画 - 条件中的变量绑定需要初始化程序

时间:2018-01-07 10:31:23

标签: ios swift uiviewcontroller

我正在尝试按照一个简单的教程来进行从一个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{

        }

    }

}

1 个答案:

答案 0 :(得分:0)

animateTransition函数存在一些问题。

首先出现错误的行应为:

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

因为您不需要进行个案检查,而您尝试分配不进行比较,因此它不是= =。

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

var CircularTransitionMode: CircularTransitionMode

然后立即尝试使用它。

修复原始错误,然后在下一行标记第二个,说它正在使用而未初始化。

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