В настоящее время я пытаюсь запустить функцию из отдельного класса в viewcontrollers viewdidload (). Предыдущая команда разработчиков написала код, и я изо всех сил пытаюсь заставить его работать, поскольку я также очень новичок в Swift.
Я не включил все функции, так как они очень длинные, но мне просто интересно, могу ли я получить какой-нибудь совет, я получаю сообщение об ошибке «Неустранимая ошибка: неожиданно обнаружил ноль при неявном развертывании необязательного значения» для значений shapelayer Я знаю, что это потому, что они не были инициализированы, но я изо всех сил пытаюсь выяснить, как правильно установить переменные, не путая весь код, просто надеясь на некоторое руководство.
Я уверен, что мне, вероятно, нужно объяснить больше, но есть много кода и я смотрел на него весь день, дайте мне знать, если мне нужно больше загружать.
class TraceViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
@IBOutlet weak var canvasView: CanvasView!
static var curLetter = "A"
override func viewDidLoad() {
canvasView.letter = TraceViewController.curLetter
canvasView.clearCanvas()
}
}
Класс :
class CanvasView:UIView {
var lineColour:UIColor!
var lineWidth:CGFloat!
var path:UIBezierPath!
var touchPoint:CGPoint!
var startingPoint:CGPoint!
var initialPoint:CGPoint!
var stroke1Done = false
var stroke2Done = false
var stroke3Done = false
var stroke4Done = false
var stroke5Done = false
var stroke6Done = false
var stroke7Done = false
//Track current stroke and add all the shape layers into an array
var currentStroke = 1
var strokesArray = [CAShapeLayer]()
func drawShapeLayer() {
let shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath //error here
shapeLayer.strokeColor = lineColour.cgColor
shapeLayer.lineWidth = lineWidth
shapeLayer.fillColor = UIColor.clear.cgColor
self.layer.addSublayer(shapeLayer)
//Add the shapes in array so that we can track it
self.strokesArray.append(shapeLayer)
self.setNeedsLayout()
}
func clearCanvas() {
guard path != nil else {return}
path.removeAllPoints()
self.layer.sublayers = nil
self.setNeedsDisplay()
print("Hello")
stroke1Done = false
stroke2Done = false
stroke3Done = false
stroke4Done = false
stroke5Done = false
stroke6Done = false
stroke7Done = false
goNext = false
updateStrokePoints()
updateStrokeDifference()
currentStroke = 1
}
}