Пользовательские ограничения класса UIView в зависимости от ParentView - PullRequest
0 голосов
/ 15 марта 2019

Я создаю пользовательский класс UIView, который содержит средство выбора даты. Я хочу настроить ограничения представления для ссылки на родительское представление, которое будет вызывать мой пользовательский класс. вот мой следующий код. это то, что я получаю Поток 1: фатальная ошибка: неожиданно обнаружен ноль при развертывании необязательного значения

class CustomView: UIView {
    var datepicker:UIDatePicker!
    override init(frame: CGRect) {
        super.init(frame: frame)
        setupConstraints()
    } // initiliaze the button like this CustomButton()

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

    }

    func setupDatePicker() {
        let datepicker = UIDatePicker()
        datepicker.minimumDate = Date()
    }

    func setupConstraints(){
        setupDatePicker()

        translatesAutoresizingMaskIntoConstraints = false
        leadingAnchor.constraint(equalTo: superview!.leadingAnchor, constant: 20).isActive = true // the error occurs here
        trailingAnchor.constraint(equalTo: superview!.trailingAnchor, constant: -20).isActive = true
        heightAnchor.constraint(equalToConstant: 60).isActive = true
        centerYAnchor.constraint(equalTo: superview!.centerYAnchor).isActive = true
        backgroundColor = .red


        addSubview(datepicker)
        datepicker.translatesAutoresizingMaskIntoConstraints = false
        datepicker.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 10).isActive = true
        datepicker.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -10).isActive = true
        datepicker.heightAnchor.constraint(equalToConstant: 50).isActive = true
        datepicker.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true



    }


}

и здесь я создаю свой собственный вид и запускаю его

    var customView: CustomView!

class ListViewController: UIViewController {
    @IBOutlet var tableView: UITableView!

    override func viewDidLoad() {
            super.viewDidLoad()
         customView = CustomView()
         view.addSubview(customView)
         view.bringSubviewToFront(customView)

Спасибо за ваше время.

1 Ответ

0 голосов
/ 15 марта 2019

Вы не присваиваете var datepicker:UIDatePicker!, поэтому nil. Попробуйте:

func setupDatePicker() {
    let datepicker = UIDatePicker()
    datepicker.minimumDate = Date()
    self.datepicker = datepicker
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...