У меня возникает странная проблема с установкой одной из моих переменных на nil после того, как я установил ее в viewDidLoad.переменная set в viewDidLoad становится nil позже
Я использую VideoPreviewLayer AVPreview, и есть много разных очередей сеансов, поэтому, возможно, я плохо что-то понимаю. Я мог бы использовать диагностику проблемы. Код довольно длинный, но он прост. Любая помощь будет принята с благодарностью. Полный код здесь: https://gist.github.com/makthrow/0570cc571f1c7866e094096626c19498
и короткая версия:
var customRecordButton : RecordButton!
var progressTimer : Timer!
var progress : CGFloat! = 0
override func viewDidLoad() {
super.viewDidLoad()
// custom recordButton https://github.com/samuelbeek/recordbutton
let recordButtonRect = CGRect(x: 0, y: 0, width: 70, height: 70)
let customRecordButton = RecordButton(frame: recordButtonRect)
customRecordButton.center = self.view.center
customRecordButton.progressColor = UIColor.red
customRecordButton.closeWhenFinished = false
customRecordButton.center.x = self.view.center.x
customRecordButton.addTarget(self, action: #selector(self.record), for: .touchDown)
customRecordButton.addTarget(self, action: #selector(self.stop), for: UIControlEvents.touchUpInside)
self.view.addSubview(customRecordButton)
}
func record() {
self.progressTimer = Timer.scheduledTimer(timeInterval: 0.05, target: self, selector: #selector(updateProgress), userInfo: nil, repeats: true)
}
func updateProgress() {
let maxDuration = CGFloat(5) // max duration of the recordButton
progress = progress + (CGFloat(0.05)/maxDuration)
customRecordButton.setProgress(progress) // (customRecordButton is always nil here)
if progress >= 1 {
progressTimer.invalidate()
}
}
в основном, в UpdateProgress(), customRecordButton всегда ноль
Я пытался идти через код и в viewWillAppear, customRecordButton является но и там. Я не уверен, что это проблема с классом RecordButton, который я использую отсюда: https://github.com/samuelbeek/RecordButton Я не думаю, что должна быть проблема.
Редактировать 1: добавлены переменные выше viewDidLoad. Я их там просто забыл вставить.
редактировать 2: Кстати, кнопка записи появляется на моем телефоне UI, только когда я нажимаю его он говорит мне customRecordButton равна нулю
Try объявить 'пусть customRecordButton = RecordButton()' над 'viewDidLoad ', а затем в' viewDidLoad'set это 'customRecordButton = RecordButton (frame: recordButtonRect)' –
Извините, я должен был добавить это в свой первоначальный ответ. У меня есть переменные, установленные выше viewDidLoad. я отредактировал код – makthrow
Над 'viewdidload' вы имеете' var customRecordButton' и внутри вас 'let customRecordButton', так ли это в вашем коде? Если да, то у вас есть свои проблемы. –