Я пытаюсь воссоздать табличное представление с одного экрана на другой, но постоянно получаю сигнал ошибки sigbart - PullRequest
1 голос
/ 06 июля 2019

Я создаю простое приложение. Я пытаюсь сделать так, чтобы два экрана выглядели одинаково, но я не могу заставить работать одно из представлений таблицы. Вместо этого, когда вызывается настроенная функция просмотра таблицы, появляется сигнал ошибки sigbart. Я не понимаю, почему это так, потому что на другом экране табличное представление работает без проблем, и я скопировал код.

let tableview: UITableView = {
    let tv = UITableView()

    tv.backgroundColor = UIColor.white
    tv.translatesAutoresizingMaskIntoConstraints = false

    return tv
}()

func setupTableView() {
    tableview.delegate = self
    tableview.dataSource = self

    tableview.register(BunchCells.self, forCellReuseIdentifier: "cellId")

    tableview.backgroundColor = UIColor(red: 1, green: 1, blue: 1, alpha: 0)

    view.addSubview(tableview)

    NSLayoutConstraint.activate([
        tableview.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 170),
        tableview.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
        tableview.rightAnchor.constraint(equalTo: self.view.rightAnchor),
        tableview.leftAnchor.constraint(equalTo: self.view.leftAnchor)
    ])
}

class BunchCells: UITableViewCell {
    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)

        setupView()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    let cellView: UIView = {
        let view = UIView()

        view.backgroundColor = UIColor.red
        view.layer.cornerRadius = 10

        view.translatesAutoresizingMaskIntoConstraints = false

        return view
    }()

    let dayLabel: UILabel = {
        let label = UILabel()
        label.text = "Day 1"
        label.textColor = UIColor.white
        label.font = UIFont.boldSystemFont(ofSize: 16)
        label.translatesAutoresizingMaskIntoConstraints = false

        return label
    }()    

    func setupView() {
        addSubview(cellView)

        NSLayoutConstraint.activate([
            cellView.topAnchor.constraint(equalTo: self.topAnchor, constant: 20),
            cellView.rightAnchor.constraint(equalTo: self.rightAnchor, constant: -10),
            cellView.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 10),
            cellView.bottomAnchor.constraint(equalTo: self.bottomAnchor)
        ])

        dayLabel.heightAnchor.constraint(equalToConstant: 200).isActive = true
        dayLabel.widthAnchor.constraint(equalToConstant: 200).isActive = true
        dayLabel.centerYAnchor.constraint(equalTo: cellView.centerYAnchor).isActive = true
        dayLabel.leftAnchor.constraint(equalTo: cellView.leftAnchor, constant: 20).isActive = true
    }
}

1 Ответ

1 голос
/ 07 июля 2019

Я запускаю вашу программу и не вижу ошибок, но я думаю, что это выглядит немного странно:

weak var tableView: UITableView!

let tableview: UITableView = {
    let tv = UITableView()
    tv.translatesAutoresizingMaskIntoConstraints = false
    tv.separatorColor = UIColor.white
    return tv
}()

Возможно, причиной вашей ошибки было то, что вы случайно вызвали метод на tableView, который всегда nil.? Если это не так, дайте несколько советов, как воспроизвести вашу ошибку).

...