fatal error : (On Adding and removing a View from SuperView)

fatal error : (On Adding and removing a View from SuperView)

我正在使用 https://github.com/keygx/GradientCircularProgress 这个 cocoa pod 在我的应用程序中创建渐变圆圈

这是我的代码。

import GradientCircularProgress

class MyViewController : UIViewController {

    let progress = GradientCircularProgress()
    var progressView: UIView?

    var Opt2Btn : UIButton?

    override func viewDidLoad() 
    {
        super.viewDidLoad()

        //My Code

        self.create()

    }

    func reset()
    {
        self.progressView?.removeFromSuperview()
        //self.progressView = nil

        // Some more Code

        self.create()
    }
    func create()
    {

        let ratio: CGFloat = CGFloat(correctCount) / CGFloat(temp.count)
        let rect = CGRect(x: 0, y: 0, width: 200, height: 200)
        progressView = progress.showAtRatio(frame: rect, display: true, style: GreenLightStyle() as StyleProperty)
        progressView?.center = CGPoint(x: self.view.frame.width / 2, y: self.view.frame.width / 2 )
        view.addSubview(progressView!)
        progress.updateRatio(ratio)

        Opt2Btn = UIButton(frame: CGRect(x: 10, y: (progressView?.frame.size.height)! + 190 + (correctLbl?.frame.size.height)! , width: self.view.frame.width - 20 , height: 40))
        Opt2Btn?.setTitle("Reset", for: .normal)
        Opt2Btn?.backgroundColor = UIColor.blue
        Opt2Btn?.layer.borderColor =  UIColor .blue.cgColor
        Opt2Btn?.addTarget(self, action: #selector(self.reset), for: .touchUpInside)
        self.view.addSubview(Opt2Btn!)


    }

}

我尝试生成与我的应用程序相同的场景。当我 运行 这段代码时,它第一次完美地显示了圆圈。当我按下按钮(Opt2Btn)时,它也会清除圆圈但不会再次创建。给出这个错误,

fatal error: unexpectedly found nil while unwrapping an Optional value

view.addSubview(progressView!)这一行。我也试过 self.progressView = nil 但没用。

我是 Swift 的新手。谁能建议我在这里做错了什么? 谢谢!!

似乎从其父视图中删除 progessView 会导致 progress.showAtRatio 到 return nil。然后你在 view.addSubView(progressView!) 中强制展开 progressView 并得到一个异常。

如果您参考所用框架的文档,您会发现应该使用

progress.dismiss(progress: progressView!)

不是removeFromSuperview

使用 ! 强制展开变量时,您应该始终小心。 - 问问自己 "Could this be nil and do I want my program to crash if it is?"