"Неожиданно найдено ноль при развертывании необязательного значения"
Я хотел бы сделать ярлык, который присутствует только при нажатии кнопки. Когда функция hidden() вызывается в MainViewController, она работает хорошо, но когда я вызываю ее из класса ButtonAction (та же функция), я получаю классическую ошибку:
Неожиданно найдено ноль при развертывании необязательного значения
Вот код:
// MainViewController.swift
import UIKit
class MainViewController: UIViewController {
@IBOutlet weak var labelToShow: UILabel!
@IBOutlet weak var button: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
labelToShow.isHidden = true
}
func hidden() {
labelToShow.isHidden = true
}
func inHidden() {
labelToShow.isHidden = false
}
}
А ТАКЖЕ:
// ButtonAction.swift
import UIKit
class ButtonAction: UIButton {
var touched:Bool = false
var mainScreen = MainViewController()
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
sleep(1)
mainScreen.hidden()
touched = true
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
mainScreen.inHidden()
touched = false
}
}
2 ответа
mainScreen
экземпляр создан с инициализатором по умолчанию MainViewController()
отличается от разработанных в Интерфейсном Разработчике.
Вам нужна фактическая ссылка на контроллер основного вида (через IBOutlet
или протокол / делегат и т. д.)
В этой строке кода вы создаете новый экземпляр вашего MainViewController:
var mainScreen = MainViewController()
Вы должны получить ссылку вашего MainViewController()
экземпляр (создается автоматически storyboard
)