我正在尝试遵循一个简单的教程,以实现从一个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
然后立即尝试使用它。
解决原始错误后,将在下一行标记第二个错误,表明该错误未初始化就被使用。
您也有很多未使用的变量,但是也许您还没有提出完整的代码。